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;