题解 | #对所有员工的薪水按照salary降序进行1-N的排名#

对所有员工的薪水按照salary降序进行1-N的排名

http://www.nowcoder.com/practice/b9068bfe5df74276bd015b9729eec4bf

首先利用窗口函数对薪资进行排序。

# 这里是密集排序,dense_rank()函数,区别于rank() 和 row_number(),不清楚这个知识点可以自己学习一下。

select
  emp_no,
  salary,
  dense_rank() over(order by salary desc) as t_rank
from
  salaries

对上面的排序结果,再进行 t_rank和emp_no升序排序

select
   emp_no,
   salary,
   t_rank
from
  (
   select
    emp_no,
    salary,
    dense_rank() over(order by salary desc) as t_rank
  from
    salaries
   ) aa
order by 
  t_rank asc,
  emp_no asc
全部评论

相关推荐

刷牛客的单身狗很认真:全国可飞,支持007 上班时间,是吧?
点赞 评论 收藏
分享
青春运维少年不会梦到...:实习大王
点赞 评论 收藏
分享
12-03 15:20
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务