看到这个题目第一眼首先想到做一个中间表:
部门号,员工号,薪水,薪水排名
然后在此基础上取薪水排名第一的信息,所以既然是排名那就是考察窗口函数:
select dept_no, emp_no,salary maxSalary from (select a.dept_no,a.emp_no,salary,row_number() over(partition by dept_no order by salary desc) rn from dept_emp a join salaries b on a.emp_no = b.emp_no) c where rn = 1 order by dept_no