题解 | 获取每个部门中薪水最高的员工相关信息
with q1 as (select d.emp_no, d.dept_no, s.salary from salaries s join dept_emp d on d.emp_no=s.emp_no) select q1.dept_no,q1.emp_no,q1.salary from q1 join (select dept_no, MAX(salary) as maxSalary from q1 group by dept_no) as m on q1.dept_no=m.dept_no and q1.salary=m.maxSalary order by dept_no;
首先构造通用表q1
with q1 as (select d.emp_no, d.dept_no, s.salary from salaries s join dept_emp d on d.emp_no=s.emp_no)
然后构造各部门最大薪资表m:
(select dept_no, MAX(salary) as maxSalary from q1 group by dept_no) as m
最后通过联结表q1和m中部门和最大薪资两个条件反向确定员工编号,获取最终结果。