题解 | #获取每个部门中当前员工薪水最高的相关信息#

获取每个部门中当前员工薪水最高的相关信息

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;

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务