题解 | #对所有员工的薪水按salary降序进行排名#
对所有员工的薪水按照salary降序进行1-N的排名
https://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf
SELECT * FROM (SELECT emp_no, salary, DENSE_RANK() OVER(ORDER BY salary DESC) AS t_rank FROM salaries) AS ranked_salary ORDER BY t_rank, emp_no
解题思路两步:
1.对salary排序:
使用DENSE_RANK() 和OVER()窗口函数
2.解决相同salary时使用emp_no排序的问题:
如果直接修改OVER()为DENSE_RANK() OVER(ORDER BY salary DESC,emp_no) AS t_rank
则会导致两个相同salary的行有不同排名
因此要将第一步中的视图变成一个table,然后再去排序