思路
step1:根据emp_no连表查出所有员工的工资(包含部门领导的工资)r1
setp2:同上查出部门领导的工资r2
setp3:r1和r2根据部门编号inner join,这样每一行的数据都包括了员工编号,员工工资,同部门领导编号,领导工资
setp4:where筛选叁:排除本身是领导的员工和领导工资低于员工的数据emp_no != manager_no and emp_salary >manager_salary
select emp_no,manager_no,emp_salary,manager_salary
from (select de.emp_no,de.dept_no,s.salary as emp_salary
from dept_emp de
left join salaries s
on de.emp_no = s.emp_no)r1
inner join
(select dm.emp_no as manager_no,dm.dept_no,s.salary as manager_salary
from dept_manager dm
left join salaries s
on dm.emp_no=s.emp_no)r2
on r1.dept_no=r2.dept_no
where emp_no != manager_no and emp_salary >manager_salary