当前位置: 代码迷 >> 综合 >> Rank(), DENSE_RANK()和ROW_NUMBER()
  详细解决方案

Rank(), DENSE_RANK()和ROW_NUMBER()

热度:1   发布时间:2023-12-29 00:52:20.0

由一道题目开始

以下哪一种排序函数会形成“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()

  相关解决方案