在mysql 5.7 版本以下,如何用一段语句求出中位数
时间: 2024-03-10 10:46:17 浏览: 214
mysql5.7-windows版.zip
在 MySQL 5.7 版本以下,可以使用以下语句求出表中某一列的中位数:
```
SELECT AVG(t1.col) AS median
FROM (
SELECT @rownum:=@rownum+1 AS `row_number`, t.col
FROM (SELECT @rownum:=0) r, table_name t
ORDER BY t.col
) AS t1,
(
SELECT COUNT(*) AS total_rows
FROM table_name
) AS t2
WHERE 1
AND t1.row_number IN ((t2.total_rows+1) DIV 2, (t2.total_rows+2) DIV 2);
```
其中,`table_name` 是要求中位数的表名,`col` 是要求中位数的列名。这条语句会先将表按照 `col` 列升序排序,然后使用变量 `@rownum` 记录每一行的行号,最后计算出中位数所在的行号,取出该行的值作为中位数。
阅读全文