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

全部评论

相关推荐

后端转测开第一人:再怎么劝退也没用的 某些群体总以为在一个幸存者偏差的软件上看见了极少数秋招上岸某个大厂的个例就幻想上了 事实上自己打开ssob沟通1000+连个小厂面试都没
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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