RANK():
在计算排序时,若存在相同位次,会跳过之后的位次。
比如,有3条排在第1位时,排序为:1,1,1,4…
DENSE_RANK():
在计算排序时,若存在相同位次,不会跳过之后的位次。
比如,有3条排在第1位时,排序为:1,1,1,2…
ROW_NUMBER():
这个函数赋予唯一的连续位次。
比如,有3条排在第1位时,排序为:1,2,3,4…
窗口函数的用法:
<窗口函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单>)
注意:其中[]中的内容可以忽略
题目:牛客SQL23
描述
有一个薪水表salaries简况如下:

对所有员工的薪水按照salary降序进行1-N的排名,要求相同salary并列且按照emp_no升序排列:

代码:
select emp_no,salary,DENSE_RANK() over (order by salary desc) t_rank
from salaries
order by salary desc,emp_no asc;
本文详细介绍了SQL中的三种窗口函数RANK(), DENSE_RANK(), ROW_NUMBER()的区别与使用方法,并通过一个具体的例子展示了如何利用DENSE_RANK()实现带有并列排名的需求。
4819

被折叠的 条评论
为什么被折叠?



