如何运用PERCENTILE_CONT函数在SQL中计算分组中位数?
- 内容介绍
- 相关推荐
本文共计907个文字,预计阅读时间需要4分钟。
在支持窗口函数的数据库(如PostgreSQL、SQL Server、Oracle、BigQuery)中,`PERCENTILE_CONT(0.5)` 是一种计算连续分布中位数的位置的标准方式。它不依赖于排序后取中间值的整数索引,而是自动处理偶数个值时的情况,例如通过取中间两个值的平均来得到结果,从而使结果符合统计学的定义。
注意:MySQL 8.0+ 和 SQLite 不支持该函数;SQLite 完全无原生中位数函数;MySQL 需用变量或 ROW_NUMBER() + COUNT() 手动模拟。
必须配合 PARTITION BY 和 ORDER BY 使用
PERCENTILE_CONT 是窗口函数,不能单独出现在 SELECT 列表里而不声明窗口范围。漏掉 PARTITION BY 会导致全表计算一个中位数;漏掉 ORDER BY 会报错(SQL 标准强制要求)。
本文共计907个文字,预计阅读时间需要4分钟。
在支持窗口函数的数据库(如PostgreSQL、SQL Server、Oracle、BigQuery)中,`PERCENTILE_CONT(0.5)` 是一种计算连续分布中位数的位置的标准方式。它不依赖于排序后取中间值的整数索引,而是自动处理偶数个值时的情况,例如通过取中间两个值的平均来得到结果,从而使结果符合统计学的定义。
注意:MySQL 8.0+ 和 SQLite 不支持该函数;SQLite 完全无原生中位数函数;MySQL 需用变量或 ROW_NUMBER() + COUNT() 手动模拟。
必须配合 PARTITION BY 和 ORDER BY 使用
PERCENTILE_CONT 是窗口函数,不能单独出现在 SELECT 列表里而不声明窗口范围。漏掉 PARTITION BY 会导致全表计算一个中位数;漏掉 ORDER BY 会报错(SQL 标准强制要求)。

