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

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

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

  1. 从两个salaries里取数;
  2. 给定s1的金额,把s2里大于>=该金额的数提出来,比如s1对应的一行是8000,整个表里只有8000和8100>=8000,那么这个emp_no对应的就是这俩数;
  3. 根据emp_no做group by,得到每个员工对应的金额小于的所有值,然后再计算不重复值,即count(distinct s2.salary);
  4. 最后按金额降序。

代码:

select s1.emp_no, s1.salary, count(distinct s2.salary)
from salaries s1, salaries s2
where s1.salary <= s2.salary
group by s1.emp_no
order by s1.salary desc

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 18:54
说等下个版本吧的发呆爱好者很贪睡:佬最后去了哪家呀
点赞 评论 收藏
分享
10-30 22:18
已编辑
毛坦厂中学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务