本题中难点在于根据薪水salary的降序、职工号emp_no的升序来进行排序,这里可以使用窗口函数dense_rank(); 解题代码:select emp_no,salary,dense_rank() over (order by salary desc) as t_rank from salaries order by salary desc,emp_no asc; 理解:order by salary desc,emp_no asc; 这里排序有个优先级,先进行薪水的降序排序,如果遇到薪水相同的员工则按照职工号emp_no的升序来调整这两个位置。 转载补充:①rank() :在计算排序时,若存在相同位次,会跳过之后的位次;例如,有3条排在第1位时,排序为1,1,1,4...;②dense_rank():在计算排序时,若存在相同位次,不会跳过之后的位次;例如,有3条排在第1位时,排序为1,1,2,2...;③row_number():赋予唯一的连续位次;例如:有3条排在第一位时,排序为1,2,3,4...