SQL212

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

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

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 max(salary)
from employees e
join salaries s
on e.emp_no=s.emp_no
where salary < 
(select max(salary)
from employees e
join salaries s
on e.emp_no=s.emp_no))

查询结果:职员编号(s.emp_no或e.emp_no都行),salary,last_name,first_name

查询来源:employees,salaries

查询条件:薪水排名第二,不能使用order by函数

解题思路:由于查询结果来自于两张表,所以需要先将两表进行链接,两表相关联的数据为职员编号(emp_no),所以链接健选择emp_no。假设两张表的职员的信息是一一对应的,所以这里使用内连接。要筛选出薪水排名第二的数据,那么只要在所有小于薪水排名第一的数据里选择最高的那个,就是排名第二的(有点类似于矮个子里挑高个)。所以这里选择先使用where子查询查询出所有小于薪水最高的数据,然后再在其中选出薪水最高的数据作为where子查询的条件,最后就能再选择查询对应的职员编号,salary,last_name,first_name

全部评论

相关推荐

08-06 08:33
四川大学 Java
假老练Jalolin:你要直接挂我我都没这么大意见,暑期实习也是做完了三道笔试题再给我说简历不过,傻鸟公司
投递OPPO等公司7个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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