题解 | 获取每个部门中薪水最高的员工相关信息
获取每个部门中薪水最高的员工相关信息
https://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
这题主要分为三个步骤:
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;
查看5道真题和解析