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

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

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

不能使用order by

法一:先查询最多的薪水,再查询除此以外的最多的薪水

select s.emp_no,max(salary),last_name,first_name from employees e join salaries s on e.emp_no=s.emp_no 
where salary<>(select max(salary) from salaries)

法二:两张薪水表连接,辅助表的薪水比原表高,分组聚合,辅助表的去重记录数+1即各薪水值的排名

select s.emp_no,salary,last_name,first_name from employees e join salaries s on e.emp_no=s.emp_no 
where salary=(select s1.salary from salaries s1 join salaries s2 on s1.salary<s2.salary group by s1.salary having count(distinct s2.salary)=1)
SQL题解 文章被收录于专栏

主要是为自己做个笔记

全部评论

相关推荐

仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务