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,就能取出部门薪水最高值