刚开始的思路:联结两个表后使用GROUP BY 和MAX聚合函数,但是在mysql环境中通不过
SELECT dept_no,dept_emp.emp_no,MAX(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_no ORDER BY dept_no
后来看了评论区的分析,重新整理:
先找出各个部门最高的薪资,再找到各个员工的部门、薪资,联结查询后的两个表,这里筛选时需要两个条件,一个是部门,一个是最高薪资
SELECT a.dept_no,b.emp_no,a.salary
FROM
(SELECT dept_no,MAX(salary) AS salary
FROM salaries
INNER JOIN dept_emp
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_no) AS a
INNER JOIN
(SELECT dept_no,dept_emp.emp_no,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 dept_no


京公网安备 11010502036488号