在 MySQL 中计算中位数

17 Mar 2025 | 阅读 2 分钟
Calculate Median in MySQL

引言

中位数是用于表示一组已按升序或降序排列的观测值集中的中间值概念的最重要的统计量之一。与之相反,中位数不受数据集中存在的极端值的影响,这使得该度量在分布偏斜的情况下非常有用。正如我们所知,MySQL 没有内置的中位数支持,因此使用 SQL 计算中位数的過程涉及使用几个 SQL 表达式。本文探讨了使用 MySQL 计算中位数的技巧。

中位数的重要性

平均值和中位数都是分析数据位置的重要工具,并用于区分具有极端值的数据集和没有这些值的数据集。例如,在表示薪资水平或房价的情况下,中位数更优,因为它反映了更具代表性的平均值。

计算中位数

SQL 代码

输出

Calculate Median in MySQL

说明

通用表表达式 (CTE)

第三条语句指出,它在 WITH 子句的 CTE 中定义了一个名为 ranked_score 的表达式。

  1. 在 CTE 内部
    ROW_NUMBER() 的作用是在结果集中按规定对记录进行排名,在给定的上下文中,对于 SORTED BY 参数,它首先按分数排序。
    例如 COUNT(*) OVER (),它返回引用数据集的总计数或记录大小。
  2. 选择中位数
    第一个很简单;中位数等于占据排名数为 FLOOR((记录数 + 1)/2)CEIL((记录数 + 1)/2) 的值的总和,除以 2,并舍入到整数部分。
    这些位置是基于它们读取的总行数构建的,包括偶数和奇数行,这提供了数据集的中位数的近似值。

结论

在 SQL 中计算中位数,尤其是在 MySQL 中,对于商业智能非常重要,因为它允许在不受极端值影响的情况下评估数据集的离散程度。尽管 MySQL 没有提供内置的中位数函数,但可以通过某些复杂的 SQL 操作(如子查询和窗口函数)来完成相同的任务。


下一主题#