题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
https://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
我太菜了,被这道题卡了好久。。。
一开始我是打算直接连表,然后对dept_no进行分组就好了,但是这样就无法找出组内的salary最大值了,很麻烦
然后这是正确的思路:
1、通过连表生成两个表,这两个表分别为t1、t2
t1是把dept进行分类然后找出他的最大salary值,相当于每个部门的最高薪水
t2就是找出emp_no对应的dept_no跟salary值,就相当于所有人的编号、部门、薪水
2、把t1\t2进行连表,然后你就看t2的每一个人,看他们谁跟t1的部门、薪水匹配,匹配了那他就是最高薪水的人咯
其实就是把复杂的步骤分解来做
select t1.dept_no,t2.emp_no,t2.salary as maxSalary from ( select d.dept_no,max(s.salary) as maxSalary from dept_emp as d inner join salaries as s on d.emp_no = s.emp_no group by d.dept_no ) as t1 inner join ( select d.emp_no,d.dept_no,s.salary from dept_emp as d inner join salaries as s on d.emp_no = s.emp_no ) as t2 on t1.dept_no = t2.dept_no and t1.maxSalary = t2.salary order by t1.dept_no;