select t1.dept_no,t2.emp_no,t1.maxSalary from (select d.dept_no, any_value(d.emp_no), max(s.salary) as maxSalary from dept_emp d inner join salaries as s on d.emp_no = s.emp_no where d.to_date = '9999-01-01' group by d.dept_no order by d.dept_no asc) as t1, (select d.dept_no, s.salary,d.emp_no from dept_emp d inner join salaries s on d.emp_no = s.emp_no) as t2 where t2.salary = t1.maxSalary and t2.dept_no = t1.dept_no order by t1.dept_no asc
确实挺难的
表1先得到每个部门最高的工资
(select d.dept_no, any_value(d.emp_no), max(s.salary) as maxSalary from dept_emp d inner join salaries as s
on d.emp_no = s.emp_no
where d.to_date = '9999-01-01'
group by d.dept_no
order by d.dept_no asc) as t1
表2得到每个员工的工资
最后用表2来过滤表1得到 最终结果