解题思路
1.联结表dept_emp和表salary,查询出每个部门薪水最高的员工的dept_no和salary,作为新表a
SELECT dept_emp.dept_no,MAX(salaries.salary) AS salary FROM dept_emp INNER JOIN salaries ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date='9999-01-01' AND salaries.to_date='9999-01-01' GROUP BY dept_emp.dept_no;
2.将dept_emp表和salary表联结,作为新表b
SELECT dept_emp.dept_no,dept_emp.emp_no,salaries.salary FROM dept_emp INNER JOIN salaries ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date='9999-01-01' AND salaries.to_date='9999-01-01';
3.联结表a和表b,获取表a中的dept_no,salary字段,表b中的emp_no字段,并按照表a的部门编号升序排列
SELECT a.dept_no,b.emp_no,a.salary AS maxSalary FROM (SELECT dept_emp.dept_no,MAX(salaries.salary) AS salary FROM dept_emp INNER JOIN salaries ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date='9999-01-01' AND salaries.to_date='9999-01-01' GROUP BY dept_emp.dept_no) AS a INNER JOIN (SELECT dept_emp.dept_no,dept_emp.emp_no,salaries.salary FROM dept_emp INNER JOIN salaries ON dept_emp.emp_no=salaries.emp_no WHERE dept_emp.to_date='9999-01-01' AND salaries.to_date='9999-01-01') AS b ON a.salary=b.salary AND a.dept_no=b.dept_no ORDER BY a.dept_no;