rank over和row number over
时间: 2023-05-08 09:57:39 浏览: 85
Oracle row_number()over
Rank over和row number over都是窗口函数中的重要功能。
Rank over可以根据指定的排序方式对查询结果集中的行进行排序,并为每一行分配一个排名。如果有相同的值,则它们将得到相同的排名,并将被视为相等。例如,如果一个表中有多个记录的销售额相同,那么这些记录将得到相同的排名并列在同一位置上。Rank over语法如下:
RANK() OVER (PARTITION BY column1, column2 ORDER BY column3 DESC)
在上面的示例中,PARTITION BY指定了窗口的分区方式,ORDER BY指定了排列顺序,DESC意味着降序排列。
与之相反,row number over返回查询结果集中每一行的行号。与排名不同,行号是唯一的且始终是连续的数字。例如,如果一个表中有5条记录,那么这些记录将按照行号为1、2、3、4和5进行排序。row number over语法如下:
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY column3 DESC)
在上面的示例中,PARTITION BY指定了窗口的分区方式,ORDER BY指定了排列顺序,DESC意味着降序排列。
总的来说,Rank over用于指定排名,而row number over用于分配唯一的行号。在实际工作中,通常需要使用其中的一个或者两个来完成窗口函数中的相关操作。
阅读全文