20220720 开窗函数2:rank()/dense_rank()

20220720 开窗函数2:rank()/dense_rank()

RANK()为每一组的行生成一个序号,但是却与ROW_NUMBER()有点不同。ROW_NUMBER()按照ORDER BY的排序,如果有相同的值,会生成不同的序号
RANK()按照ORDER BY的排序,如果有相同的值,会生成相同的序号,并且接下来的序号是不连续的

例如:两个相同的行生成序号2,那么接下来会生成序号是4

DENSE_RANK(密集排名)
和RANK类似,如果有相同的值,会生成相同的序号。不同的是,如果有相同的序号,那么接下来的序号不会间断

例如:两个相同的行生成序号2,那么接下来生成的序号是3

下面是rank()和dense_rank()的对比:

select Salary,
ROW_NUMBER() over(order by Salary) 'ROW_NUMBER',
RANK() over(order by Salary) 'RANK',
DENSE_RANK() over(order by Salary) 'DENSE_RANK'
from Temp_Test
20220720 开窗函数2:rank()/dense_rank()_第1张图片

可以根据自己的业务需要,选择不同的排名函数进行排名。

近期已学内容回顾:

20220718 Leetcode练习内容
20220719 开窗函数1:ROW_NUMBER()

你可能感兴趣的:(SQL,Server学习,sqlserver)