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,然后再去排序

京公网安备 11010502036488号