percentile:计算精确百分位数
速查结论
percentile(col, percentage [, frequency]) 是 Spark SQL 中用于计算数值列的精确百分位数值的函数。
语法
percentile(col, percentage [, frequency])
percentile(col, array(percentage1 [, percentage2]...) [, frequency])
参数说明
| 参数 | 说明 |
|---|---|
| col | 数值列或 ANSI 间隔列,要计算百分位数的目标列 |
| percentage | 一个介于 0.0 和 1.0 之间的数值,或由这样的数值组成的数组 |
| frequency | 可选正整数,表示每个值的频次权重 |
示例
> SELECT percentile(col, 0.3) FROM VALUES (0), (10) AS tab(col);
3.0
> SELECT percentile(col, array(0.25, 0.75)) FROM VALUES (0), (10) AS tab(col);
[2.5,7.5]
> SELECT percentile(col, 0.5) FROM VALUES (INTERVAL '0' MONTH), (INTERVAL '10' MONTH) AS tab(col);
0-5
> SELECT percentile(col, array(0.2, 0.5)) FROM VALUES (INTERVAL '0' SECOND), (INTERVAL '10' SECOND) AS tab(col);
[0 00:00:02.000000000,0 00:00:05.000000000]
常见报错与避坑指南
- percentage 范围校验:percentage 的值必须在 0.0 到 1.0 之间(含边界),超出范围会直接报错。例如
0.5表示第 50 百分位(中位数)。 - frequency 必须为正整数:frequency 参数必须是正整数,传入 0 或负数会导致错误。
- 精确计算 vs 近似计算:
percentile()计算的是精确百分位数,可能消耗较多内存。若数据量极大且允许近似结果,考虑使用percentile_approx()。
Since: 2.1.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
