- 类别:
/sql-reference/functions-aggregation`(通用)、:doc:/sql-reference/functions-window`
PERCENTILE_CONT¶
根据输入列(在 order_by_expr 中指定)的连续分布返回百分位值。如果没有输入行正好位于所需的百分位数,则使用两个更接近的输入值的线性插值来计算结果。计算中将忽略 NULL 值。
- 另请参阅:
语法¶
聚合函数
窗口函数
实参¶
percentile要查找的值的百分位数。百分位数必须是介于 0.0 和 1.0 之间的常量。例如,如果要查找第 90 个百分位数的值,请指定 0.9。
order_by_expr用于对值进行排序的表达式(通常为列名)。例如,如果要查找数学 SAT 分数为第 90 个百分位的学生,请指定包含数学 SAT 分数的列。
请注意,这也是从中隐式选择返回值的列。例如,如果您按数学 SAT 分数排序,则结果是数学 SAT 分数之一。不能按一列排序并获取另一列的百分位值。
expr3这是可选表达式,用于将行分组到分区。
返回¶
返回位于指定百分位数的值。如果没有输入行正好位于所需的百分位数,则使用两个更接近的输入值的线性插值来计算结果。
备注
如果一个组只包含一个值,则将针对 任何 指定的百分位数返回该值(例如,百分位数 0.0 和百分位数 1.0 都将返回该行)。
使用说明¶
函数的
percentile实参必须是常量。此函数不支持 DISTINCT。
函数 PERCENTILE_CONT 在两个最接近的值之间进行插值,而函数 PERCENTILE_DISC 选择最接近的值而不是插值。
当此函数作为窗口函数调用时,它不支持:
OVER 子句中的 ORDER BY 子句。
显式窗口框架。
示例¶
以下示例显示了各个组中第 25 个百分位数 (0.25) 处的值:
创建表并使用以下值填充表:
运行查询并显示输出(请注意,有些值是精确的,有些是插值的):