题解 | #对所有员工的薪水按照salary降序进行1-N的排名#
对所有员工的薪水按照salary降序进行1-N的排名
http://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf
解题思路:
- 先按照工资进行排序,根据题目要求的工资排序方式,因此选择dense_rank()函数。
- 因为当工资相同时,还需要按照员工编号再进行排序,因此外层再次使用order by,值得注意的是,这里排序是就需要使用两个字段:t_rank和emp_no,如果只有emp_no则排序会出现问题。
select emp_no, salary, dense_rank() over (order by salary desc) as t_rank
from salaries
order by t_rank,emp_no
;