Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

RANK 开窗函数

RANK 开窗函数基于 OVER 子句中的 ORDER BY 表达式确定一组值中的一个值的排名。如果存在可选的 PARTITION BY 子句,则为每个行组重置排名。带符合排名标准的相同值的行接收相同的排名。Amazon Redshift 将关联行的数目添加到关联排名以计算下一个排名,因此排名可能不是连续数。例如,如果两个行的排名为 1,则下一个排名则为 3。

RANK 与 DENSE_RANK 开窗函数存在以下一点不同:对于 DENSE_RANK 来说,如果两个或两个以上的行结合,则一系列排名的值之间没有间隔。例如,如果两个行的排名为 1,则下一个排名则为 2。

您可以在同一查询中包含带有不同的 PARTITION BY 和 ORDER BY 子句的排名函数。

语法

Copy
RANK () OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list ] )

参数

( )

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

OVER

适用于 RANK 函数的窗口子句。

PARTITION BY expr_list

可选。一个或多个定义窗口的表达式。

ORDER BY order_list

可选。定义排名值基于的列。如果未指定 PARTITION BY,则 ORDER BY 使用整个表。如果省略 ORDER BY,则所有行的返回值为 1。

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

返回类型

INTEGER

示例

请参阅RANK 开窗函数示例

本页内容: