这题主要分为三个步骤:
1.联合查询部门下的员工最大的薪资
select e.dept_no, max(s.salary) from dept_emp e left join salaries s on e.emp_no = s.emp_no group by dept_no
2.根据上边查询到的dept_no 和 salary作为查询条件,进行过滤,找到差缺的emp_no信息即可
select e.dept_no, e.emp_no, s.salary from dept_emp as e left join salaries as s on e.emp_no = s.emp_no where(e.dept_no,s.salary) in ( select e.dept_no, max(s.salary) from dept_emp e left join salaries s on e.emp_no = s.emp_no group by dept_no );
3.根据题意,最后还要按照dept_no升序排序
# 先聚合查询部门下的最大员工薪资 # 在联合查询所有的信息,同时限定条件为上边查到的内容 # 最后按照dept_no升序排序即可 select e.dept_no, e.emp_no, s.salary from dept_emp as e left join salaries as s on e.emp_no = s.emp_no where(e.dept_no,s.salary) in ( select e.dept_no, max(s.salary) from dept_emp e left join salaries s on e.emp_no = s.emp_no group by dept_no ) order by e.dept_no asc;