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

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

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

本题难度主要是如何确定第二多,假如要确定第三多 第200多如何实现 关键在于使用自联结 比如一串数:我们如何确定这是第几大数呢?和自己链接同时筛选掉小于自己的数 如 4 4 4 4 3 4 3 2 4 3 2 1 4 3 2 1 所以只要计数 等于自己或者比自己多的数就行 同时也要了解 假如有相同的薪水 就需要去重 代码:

select a.salary from salaries a left join salaries b on a.salary<=b.salary 
group by a.salary having count(distinct b.salary)=2

alt 然后在左链接筛出第二大的数即可

select a.emp_no,b.salary,a.last_name,a.first_name from employees a left join salaries b on a.emp_no=b.emp_no
where b.salary=
(select a.salary from salaries a left join salaries b on a.salary<=b.salary 
group by a.salary having count(distinct b.salary)=2)

alt

全部评论

相关推荐

04-03 12:09
東京大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务