rank()、dense-rank()、row-number()的区别

柔光的暖阳◎ 2023-10-14 11:54 105阅读 0赞

Rank()、dense_rank()、row_number()都是窗口函数,他们的主要作用是为每一行计算一个排名,常常与order by一起使用。

RANK() : 返回一个数字,该数字表示在窗口内当前行的排名,排序相同时会重复,最后显示的总数不会变。

即如果有两个用户的值相同,则并列第一,那么下一个排名应该是第三名。

如:1-2-3-3-5-6

DENSE_RANK() : 返回一个数字,该数字表示在窗口内当前行的排名,排序相同时会重复,下一个排名将被跳过,最后显示的总数会减少。

即如果有两个用户的值相同,则并列第一,那么下一个排名应该是第二名。

如:1-2-3-3-4-5

ROW_NUMBER() : 返回一个数字,该数字表示在窗口内当前行的排名,会根据顺序计算,每行都有一个唯一的行号,从1开始,依次递增。 如:1-2-3-4-5

综上所述,这三种函数的主要区别在于对于相同值的处理方式不同,rank()函数会并列排名,dense_rank()函数会跳过相同的排名,row_number()函数每行都有一个唯一的排名。

发表评论

表情:
评论列表 (有 0 条评论,105人围观)

还没有评论,来说两句吧...

相关阅读

    相关 &和&&区别

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

    相关 &和&&区别

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 fal