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表与三表进行连接即可得到所有的组长编号,组长薪资,员工编号,员工薪资,此时我们再使用条件筛选出员工薪资大于组长薪资的数据即可

查看15道真题和解析