题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
select d.dept_no, d.emp_no, s.salary salary from dept_emp d join salaries s on d.emp_no = s.emp_no where s.to_date = '9999-01-01' and d.to_date = '9999-01-01' and s.salary in (select max(s2.salary) from dept_emp d1 join salaries s2 on d1.emp_no = s2.emp_no and d1.to_date = '9999-01-01' and s2.to_date = '9999-01-01' and d1.dept_no=d.dept_no group by dept_no) order by dept_no;
解题思路: 题目要求筛选出所有部门中最高工资水平的员工信息,如果直接select max(s.salary)的话,只能选出部门中最高薪资水平中的其中一名员工,无法筛选出全部的员工信息,所以需要用到子查询(select max(s2.salary) from dept_emp d1 join salaries s2 on d1.emp_no = s2.emp_no and d1.to_date = '9999-01-01' and s2.to_date = '9999-01-01' and d1.dept_no=d.dept_no group by dept_no): 找到每个部门的最高薪资水平,然后利用这个数字找到对应的员工信息,注意:需要将两个查询中的dept_no进行相等挂钩,并在子查询中对部门种类进行分类。select max(s.salary) group by dept_no表示先对部门进行分类,再搜寻出其中最高的薪资水平。