select
huizong.dept_no,
huizong.emp_no,
huizong.maxSalary

from
(select
de.dept_no,
de.emp_no,
Max(sa.salary) as maxSalary,
rank() over (partition by de.dept_no order by Max(sa.salary) desc) as rmax

from
dept_emp de
right join
salaries sa
on
de.emp_no = sa.emp_no

group by 
de.dept_no,
de.emp_no

) as huizong

where rmax = 1
order by huizong.dept_no


我想的比较简单,一开始先右链接,把表连到一起,然后使用group by 对部门号进行分组,再取出薪水最大值,这些另存为子查询huizong的表,然后再将部门号排序即可,但是我发现"group by de.dept_no,"一直报错,必须把员工号也加上,但是这样一来,结果中会出现部门员工不唯一的情况,所以再加上窗口函数,对huizong表用部门号分区,再用薪水排降序,并给出别名 rmax。然后引用的时候加一个where rmax=1,就能取出部门薪水最高值