SQL219

获取员工其当前的薪水比其manager当前薪水还高的相关信息

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

select y.emp_no emp_no,
y.manager_no manager_no,
s.salary emp_salary,
y.manager_salary manager_salary
from
(select x.dept_no,
x.manager_no,
x.manager_salary,
a.emp_no
from (select dept_no,
b.emp_no manager_no,
c.salary manager_salary
from salaries c
join dept_manager b
on b.emp_no=c.emp_no) x
join dept_emp a on x.dept_no=a.dept_no) y
join salaries s on y.emp_no=s.emp_no
where s.salary>y.manager_salary

查询结果:员工编号,组长编号,员工薪资,组长薪资

查询来源:dept_emp,dept_manager,salaries

查询条件:每个员工的薪资大于对应组长的薪资

解题思路:一开始我想着先连接第一、三表以得到员工薪资(命名为x表),再连接第二、三表得到组长薪资(命名为y表),将x,y表进行连接,结果发现找不到链接健,于是该方法最后无疾而终。但是这就让我想到了另一个方法:先通过二、三表连接找到组长薪资,组长编号,部门编号(命名为x表),随后通过x,一表连接找到每个组长以及其对应的组员编号(命名为y表),最后将y表与三表进行连接即可得到所有的组长编号,组长薪资,员工编号,员工薪资,此时我们再使用条件筛选出员工薪资大于组长薪资的数据即可

全部评论

相关推荐

已注销:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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