📜  在 MySQL 中计算中位数

📅  最后修改于: 2022-05-13 01:54:37.404000             🧑  作者: Mango

在 MySQL 中计算中位数

中位数:
在统计和概率论中,中位数是将数据样本、总体或概率分布的高半部分与低半部分分开的值。在通俗的语言中,中位数是排序后的值列表的中间值。

计算 MySQL 中的中值 -
考虑一个表格演示,其中Name是学生姓名, Distance是从他们家到大学的总距离(以公里为单位)。

NameDistance
Sumit25
Jaskirat35
Sukrut20
Shivam20
Sanchit45
Prince35
Keshav15
Preet25
Saurav20

我们从演示表计算距离的中位数。
询问 -

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));

解释 :

  1. 从内部子查询开始 - 选择将 @rowindex 分配为每个选定距离的增量索引并对距离进行排序。
  2. 一旦我们有了排序的距离列表,外部查询将获取数组中的中间项。如果数组包含奇数个项目,则两个值都将是单个中间值。
  3. 然后,外部查询的 SELECT 子句返回这两个值的平均值作为中值。

输出 -

25.0000