题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
- 先找到每个部门对应的最大金额,两个表join之后直接对部门group by求最大金额即可,记为tb2,注意不可以把员工名打出来,因为默认是第一个,而不是max金额对应的那个,所以只能得到[部门,max金额];
- 两表连接记为tb1,即包含[员工,部门,薪水];
- 把tb2按照部门左连到tb1上,再找到薪水=max薪水的即可;
- 最后按部门排序。
remark:如果某部门有多个员工都是最大薪水,那么都会挑出来,但测试的样例似乎每个部门都只有一个最大薪水员工,需要只挑一个按部门去重即可
代码:
select tb1.dept_no, tb1.emp_no, tb1.salary from
(select dept_emp.dept_no , dept_emp.emp_no , salaries.salary
from dept_emp left join salaries
on dept_emp.emp_no = salaries.emp_no) as tb1
left join
(select dept_emp.dept_no , max(salaries.salary) maxsalary
from dept_emp left join salaries
on dept_emp.emp_no = salaries.emp_no
group by dept_emp.dept_no) as tb2
on tb1.dept_no = tb2.dept_no
where tb1.salary = tb2.maxsalary
order by tb1.dept_no