percent_rank 排名窗口函数

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

计算分区中某个值的百分比排名。

语法

percent_rank()

参数

此函数不采用任何参数

返回

一个 DOUBLE。

该函数定义为窗口中的排名减 1 再除以窗口中的行数减 1。 如果窗口中只有 1 行,则排名为 0。

作为表达式,语义可以表示为:

nvl((rank() OVER(PARTITION BY p ORDER BY o) - 1) / nullif(count(1) OVER(PARTITION BY p) -1), 0), 0)

此函数与 cume_dist 分析窗口函数类似,但不完全相同。

必须将 ORDER BY 子句 加入窗口规范中。

示例

> SELECT a, b, percent_rank(b) OVER (PARTITION BY a ORDER BY b)
    FROM VALUES ('A1', 2), ('A1', 1), ('A1', 3), ('A1', 6), ('A1', 7), ('A1', 7), ('A2', 3), ('A1', 1) tab(a, b)
 A1 1  0.0
 A1 1  0.0
 A1 2  0.3333333333333333
 A1 3  0.5
 A1 6  0.6666666666666666
 A1 7  0.8333333333333334
 A1 7  0.8333333333333334
 A2 3  0.0