anjhon

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

http://www.nowcoder.com/questionTerminal/8d2c290cc4e24403b98ca82ce45d04db

最高工资可能有多个人, 先拿到最高工资的值, 在把这个值当作条件查员工编号和工资

select emp_no, salary
from salaries
where salary = 
    (select distinct salary 
        from salaries 
        order by salary desc 
        limit 1,1
    );
全部评论
条件最后不是需要将emp_no排序吗,最后应该还要加上一条 order by emp_no;就完整了
1
送花
回复
分享
发布于 2021-12-26 01:56
个人认为你的讲解属于最易懂的,但是你还忽略了一个地方。你在最外层想到了同一个工资可能有多条,但是在里层的时候,工资同样也可能是多条。limit 1,1,是排序后直接取第二条,但是你想想,最高工资同样可能有多条,例如排序后:3000,3000,2000,这时候你取到的salary仍然是最高的,并非需要的2000。因此需要先去重或者分组然后再排序。
2
送花
回复
分享
发布于 2021-03-27 20:13
网易互娱
校招火热招聘中
官网直投
秀儿,这题现在是求工资第二高的人
1
送花
回复
分享
发布于 2022-07-08 11:41
楼主代码中有distinct,就是防止有相同的工资出现的。
点赞
送花
回复
分享
发布于 2021-07-09 21:07
当前薪水的时间条件没有加上哦。
点赞
送花
回复
分享
发布于 2021-12-12 12:34
就在找这个答案 和我写的一样~
点赞
送花
回复
分享
发布于 2023-11-16 16:53 湖北

相关推荐

73 1 评论
分享
牛客网
牛客企业服务