1. 把dept_emp和salaries进行Join,筛选出一个包含当前员工的emp_no, dept_no, salary字段的表a;
(SELECT de.emp_no AS emp_no_1, de.dept_no AS emp_dept, salary AS emp_salary 
FROM dept_emp de JOIN salaries s ON de.emp_no = s.emp_no
WHERE de.to_date = '9999-01-01') AS a;
2. 同理,把dept_manager和salaries进行Join,筛选出一个只包含当前manager的emp_no, dept_no,salary字段的表b;
(SELECT dm.emp_no AS manager_no, dm.dept_no AS manager_dept, salary AS manager_salary
FROM dept_manager dm JOIN salaries s ON dm.emp_no = s.emp_no
WHERE dm.to_date = '9999-01-01') AS b;
3. 我们需要一张表,包含当前员工的emp_no, 对应的经理的emp_no,该名员工的salary,对应的经理的salary。那么如何连接呢?
思考我们如何确定一名员工相应的经理:通过确定这名员工所在的dept_no,通过dept_no可以找到该部门的经理,从而确定经理的emp_no,所以表a和表b连接时,是不是需要使用dept_no作为连接暗号。
再思考是不是多名员工对应一名经理,所以我们在连接表a和表b的时候,需要使用 表a Left Join 表b,帮每一个员工找到对应的经理和经理的薪水

4. 最后在WHERE子句里,加上条件,emp_salary > manager_salary

代码如下:
SELECT emp_no_1, manager_no, emp_salary, manager_salary
FROM
(
    SELECT de.emp_no AS emp_no_1, de.dept_no AS emp_dept, salary AS emp_salary 
FROM dept_emp de JOIN salaries s ON de.emp_no = s.emp_no
WHERE de.to_date = '9999-01-01') a
LEFT JOIN
(
    SELECT dm.emp_no AS manager_no, dm.dept_no AS manager_dept, salary AS manager_salary
FROM dept_manager dm JOIN salaries s ON dm.emp_no = s.emp_no
WHERE dm.to_date = '9999-01-01') b
ON a.emp_dept = b.manager_dept
WHERE emp_salary > manager_salary;