percentile 聚合函数

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

返回位于组中指定 percentage 处的 expr 的确切百分位值。

语法

percentile ( [ALL | DISTINCT] expr, percentage [, frequency] ) [FILTER ( WHERE cond ) ]

还可以使用 OVER 子句将此函数作为窗口函数调用。

参数

  • expr:一个计算结果为数字的表达式。
  • percentage:介于 0 和 1 之间的数值表达式,或者介于 0 和 1 之间的数值表达式的数组。
  • frequency:一个大于 0 的可选整数文本。
  • cond:一个可选的布尔表达式,可筛选用于聚合的行。

返回

如果 percentage 为数值,则为 DOUBLE;如果 percentage 为数组,则为 DOUBLE 的数组。

Frequency 描述 expr 必须统计的次数。 如果某个特定值的频率 (frequency) 为 10,则相当于该值在窗口中以频率 1 出现 10 次。 默认频率为 1。

如果指定了 DISTINCT,则该函数只对一组唯一的 expr 值运行。

示例

> SELECT percentile(col, 0.3) FROM VALUES (0), (10), (10) AS tab(col);
 6.0
> SELECT percentile(DISTINCT col, 0.3) FROM VALUES (0), (10), (10) AS tab(col);
 3.0
> SELECT percentile(col, 0.3, freq) FROM VALUES (0, 1), (10, 2) AS tab(col, freq);
 6.0
> SELECT percentile(col, array(0.25, 0.75)) FROM VALUES (0), (10) AS tab(col);
 [2.5,7.5]