Rank(), DENSE_RANK()和ROW_NUMBER()

由一道题目开始

以下哪一种排序函数会形成“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
结果如图


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()

发布了110 篇原创文章 · 获赞 17 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_38890412/article/details/104355270
今日推荐