在 MySQL 中计算中位数
中位数:
在统计和概率论中,中位数是将数据样本、总体或概率分布的高半部分与低半部分分开的值。在通俗的语言中,中位数是排序后的值列表的中间值。
计算 MySQL 中的中值 -
考虑一个表格演示,其中Name是学生姓名, Distance是从他们家到大学的总距离(以公里为单位)。
Name | Distance |
---|---|
Sumit | 25 |
Jaskirat | 35 |
Sukrut | 20 |
Shivam | 20 |
Sanchit | 45 |
Prince | 35 |
Keshav | 15 |
Preet | 25 |
Saurav | 20 |
我们从演示表计算距离的中位数。
询问 -
SET @rowindex := -1;
SELECT
AVG(d.distance) as Median
FROM
(SELECT @rowindex:=@rowindex + 1 AS rowindex,
demo.distance AS distance
FROM demo
ORDER BY demo.distance) AS d
WHERE
d.rowindex IN (FLOOR(@rowindex / 2), CEIL(@rowindex / 2));
解释 :
- 从内部子查询开始 - 选择将 @rowindex 分配为每个选定距离的增量索引并对距离进行排序。
- 一旦我们有了排序的距离列表,外部查询将获取数组中的中间项。如果数组包含奇数个项目,则两个值都将是单个中间值。
- 然后,外部查询的 SELECT 子句返回这两个值的平均值作为中值。
输出 -
25.0000