题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
https://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
首先,我们很容易想到通过链接两个table获取有关于emp_no,dep_no和salary的联合图表,然后通过group by dep_no和max(salary)来进行每个部门最高工资的筛选,但是如何获取对应的(dep_no和最高工资)下的员工id,如果只是简单用salary匹配max(salary),那么在不同的部门中有部分的分数和另一个部分的最高分一样的时候,会出现错误选择。所以处于逻辑和严谨的角度出发,我们应该同时对这个“数组”进行匹配。那有什么方法可以从一个有emp_no,dep_no和salary的图表中获得匹配到另一个表中存储着我们关于dep_no和maxSalary呢?答案就是使用join.
因此第一个图表如下注释图表1:也就是outTable,包含了emp_no,dep_no和salary
第二个图表:也就是high,包含了dept_no, maxSalary
将两个表通过dept_no和salary相连结,我们就可以得到想要的内容啦!
最后记得加上order by条件。
select outTable.dept_no,outTable.emp_no,high.maxSalary from (select e.dept_no,e.emp_no,s.salary from dept_emp e join salaries s on e.emp_no=s.emp_no) as outTable -- 图表1 join (select dept_no,max(salary)as maxSalary from dept_emp e join salaries s on e.emp_no=s.emp_no group by dept_no) as high -- 图表2 on outTable.dept_no =high.dept_no and outTable.salary=high.maxSalary order by outTable.dept_no;