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

#   请你获取薪水第二多的员工的emp_no以及其对应的薪水salary,
#   若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。
#   思路1:先denes_rank(),然后筛选(用from的子查询),注意做当前日期筛查。;拓展:rank()跳跃式排序(高考总分排名1134);denes_rank()并列连续排序(1123);row_number()连续型排序(如1234)
select emp_no, salary
from(select *, dense_rank()over(order by salary desc) rk from salaries where to_date = '9999-01-01' ) as posn
where posn.rk = 2
order by emp_no



#   思路2:distinct(用group by 去重也可以),然后order by,最后limit 1,1,最后筛选(用where的子查询)。注意做2次当前日期筛查(如果salaries表中有其他年份日期的薪水,排序后恰好是第2名,且当前年份日期的薪水和前面的第2名刚好相等。)
/*
select emp_no, salary
from salaries
where salary = (select distinct salary from salaries order by salary desc limit 1,1  where to_date = '9999-01-01') and to_date = '9999-01-01'
order by emp_no
*/

全部评论

相关推荐

内向的柠檬精在研究求职打法:你们广东工业大学为啥这么多字节,好吓人,还有那个东北大学,重庆邮电,太哈人了
点赞 评论 收藏
分享
那么好了好了:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务