select dept_no, emp_no, salary maxSalary from ( select dept_no, d.emp_no emp_no, salary, rank() over(partition by dept_no order by salary desc) rk from dept_emp d join salaries s on d.emp_no=s.emp_no ) t1 where t1.rk=1; 使用over()开窗函数,在窗口内分组排序,然后通过过滤条件只取窗口内的第一行元素