PERCENT_RANK 开窗函数 - Amazon Redshift

PERCENT_RANK 开窗函数

计算给定行的百分比排名。使用以下公式确定百分比排名:

(x - 1) / (the number of rows in the window or partition - 1)

其中,x 为当前行的排名。以下数据集说明了此公式的使用:

Row# Value Rank Calculation PERCENT_RANK 1 15 1 (1-1)/(7-1) 0.0000 2 20 2 (2-1)/(7-1) 0.1666 3 20 2 (2-1)/(7-1) 0.1666 4 20 2 (2-1)/(7-1) 0.1666 5 30 5 (5-1)/(7-1) 0.6666 6 30 5 (5-1)/(7-1) 0.6666 7 40 7 (7-1)/(7-1) 1.0000

返回值范围介于 0 和 1(含 1)之间。任何集合中的第一行的 PERCENT_RANK 均为 0。

语法

PERCENT_RANK () OVER ( [ PARTITION BY partition_expression ] [ ORDER BY order_list ] )

参数

( )

该函数没有参数,但需要空括号。

OVER

一个指定窗口分区的子句。OVER 子句不能包含窗口框架规范。

PARTITION BY partition_expression

可选。一个设置 OVER 子句中每个组的记录范围的表达式。

ORDER BY order_list

可选。用于计算百分比排名的表达式。该表达式必须具有数字数据类型或可隐式转换为 1。如果省略 ORDER BY,则所有行的返回值为 0。

如果 ORDER BY 未生成唯一顺序,则行的顺序是不确定的。有关更多信息,请参阅 窗口函数的唯一数据排序

返回类型

FLOAT8

示例

以下示例计算每个卖家的销售数量的百分比排名:

select sellerid, qty, percent_rank() over (partition by sellerid order by qty) from winsales; sellerid qty percent_rank ---------------------------------------- 1 10.00 0.0 1 10.64 0.5 1 30.37 1.0 3 10.04 0.0 3 15.15 0.33 3 20.75 0.67 3 30.55 1.0 2 20.09 0.0 2 20.12 1.0 4 10.12 0.0 4 40.23 1.0

有关 WINSALES 表的说明,请参阅窗口函数示例的示例表