由一道题目开始
以下哪一种排序函数会形成“1,2,2,4,5,5,7”的排序结果?
-
Rank()
-
DENSE_RANK()
-
ROW_NUMBER()
-
全部错误
解析:
1.row_number
row_number在排名时序号 连续 不重复,即使遇到表中的两个3时亦如此
执行
select row_number() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果如图
2.rank
rank函数会把要求排序的值相同的归为一组且每组序号一样,排序不会连续
执行
select rank() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果:
3.dense_rank
dense_rank排序是连续的,也会把相同的值分为一组且每组排序号一样
执行
select dense_rank() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果:
所以这道题选DENSE_RANK()