percent_rank:百分比排名
速查结论
percent_rank() 是 Spark SQL 中用于**计算一个值在一组值中的百分比排名(相对位置)**的窗口函数。
语法
percent_rank() OVER (PARTITION BY expr ORDER BY expr [ASC|DESC])
参数说明
| 参数 | 说明 |
|---|---|
| 无显式参数 | percent_rank() 不接收显式参数,它基于 OVER 子句中的 ORDER BY 列自动计算百分比排名。 |
示例
> SELECT a, b, percent_rank(b) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 0.0
A1 1 0.0
A1 2 1.0
A2 3 0.0
常见报错与避坑指南
- 计算公式:
percent_rank()的计算公式为(rank - 1) / (total_rows - 1)。因此分区内第一行的值始终为 0.0,最后一行的值始终为 1.0(当分区多于 1 行时)。 - 单行分区:当分区只有一行时,分母为 0,
percent_rank()返回 0.0。
Since: 2.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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