题解 | #dense_rank() 重复排名不跳过#
对所有员工的薪水按照salary降序进行1-N的排名
https://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf
select emp_no,
salary,
dense_rank() over(order by salary desc) t_rank
from salaries
order by t_rank, emp_no
dense_rank()
可以对重复元素的排名次序不跳过,即类似:1, 1, 1, 2, 3, 3, ...
的效果。符合本题要求。
over()
窗口函数限制需要进行排名的列以及升降序指定。
另外,对于排名相同的 emp_no
需要升序排列,因此在整体满足 t_rank
排序的情况下,需要 order by t_rank
指定一个次要条件 emp_no
,通过逗号连接即可。按照从左往右的顺序满足排序条件。