如何运用PERCENTILE_CONT函数在SQL中计算分组中位数?

2026-04-27 17:390阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计907个文字,预计阅读时间需要4分钟。

如何运用PERCENTILE_CONT函数在SQL中计算分组中位数?

在支持窗口函数的数据库(如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分钟。

如何运用PERCENTILE_CONT函数在SQL中计算分组中位数?

在支持窗口函数的数据库(如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 标准强制要求)。

阅读全文