由一道题目开始

以下哪一种排序函数会形成“1,2,2,4,5,5,7”的排序结果?

  1. Rank()
  2. DENSE_RANK()
  3. ROW_NUMBER()
  4. 全部错误

 

解析:

1.row_number
row_number在排名时序号 连续 不重复,即使遇到表中的两个3时亦如此

执行
select row_number() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果如图
Rank(), DENSE_RANK()和ROW_NUMBER()

2.rank
rank函数会把要求排序的值相同的归为一组且每组序号一样,排序不会连续
执行
select rank() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果:
Rank(), DENSE_RANK()和ROW_NUMBER()


3.dense_rank
dense_rank排序是连续的,也会把相同的值分为一组且每组排序号一样

执行
select dense_rank() OVER(order by e.salary desc) as row_num , e.salary
from employee e
结果:
Rank(), DENSE_RANK()和ROW_NUMBER()

所以这道题选DENSE_RANK()

相关文章: