SQL-18、查找当前薪水排名第二多的员工编号emp_no

获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

http://www.nowcoder.com/questionTerminal/c1472daba75d4635b7f8540b837cc719

题解:

select e.emp_no emp_no, s.salary salary, e.last_name last_name, e.first_name first_name
from employees e inner join salaries s on e.emp_no = s.emp_no and s.to_date='9999-01-01'
where s.salary =
    (select max( s2.salary)
    from salaries s2
    where 
     s2.salary < 
         (select max(salary) from salaries where to_date='9999-01-01')
     and s2.to_date='9999-01-01');

思路:

图片说明

全部评论
很棒的角度 ! 受教了
2 回复 分享
发布于 2021-08-06 19:37
为啥要加上to_date这个条件啊
1 回复 分享
发布于 2021-11-05 11:38
如果是第五,俺各种嵌套吗
1 回复 分享
发布于 2021-09-01 19:45
請問3.的s.to_date= "999-01-01" 為什麼在JOIN裡?有什麼用意嗎?
1 回复 分享
发布于 2021-09-01 03:09
少了排序就开始套娃模式
3 回复 分享
发布于 2021-10-13 23:14
这要是取薪水第10多的 不得累死啊
点赞 回复 分享
发布于 2023-12-05 10:51 辽宁
用where在使用max之前筛选出所有比最大值小的,用聚合函数max求出第二大的值,看完直呼woc666
点赞 回复 分享
发布于 2022-10-22 15:34 湖南
非常的优雅
点赞 回复 分享
发布于 2022-01-11 10:24
😅
点赞 回复 分享
发布于 2021-12-15 09:18
点赞 回复 分享
发布于 2021-12-15 09:18
为什么第二次select salary时给salary 取名为s2, 用s不可以吗
点赞 回复 分享
发布于 2021-12-14 15:22
为啥不能用order by
点赞 回复 分享
发布于 2021-11-22 12:17
基本的方法就是在套娃
点赞 回复 分享
发布于 2021-10-27 23:29
好清晰啊!(我是废物again)
点赞 回复 分享
发布于 2021-10-21 14:46
膜拜大佬
点赞 回复 分享
发布于 2021-09-23 15:18
这不置顶天理不容
点赞 回复 分享
发布于 2021-09-02 09:45
妙啊
点赞 回复 分享
发布于 2021-09-01 13:42
nice
点赞 回复 分享
发布于 2021-08-28 18:59
正解~
点赞 回复 分享
发布于 2021-08-26 21:19
写的很简洁 易懂!👍🏻
点赞 回复 分享
发布于 2021-08-23 14:10

相关推荐

04-11 21:31
四川大学 Java
野猪不是猪🐗:(ja)va学弟这招太狠了
点赞 评论 收藏
分享
评论
207
24
分享

创作者周榜

更多
牛客网
牛客企业服务