力扣刷题记录-184 部门工资最高的员工

这题是一道子查询,要先明确步骤和思路,之后就好写了

首先,题目给出了两张表,分别是Employee(E)和Department(D)

要求在每个部门里的最高的工资,可以先求每个部门中,工资的最大值

即,使用E表连接D表,让每个员工都带上部门id,然后使用聚合函数GROUP BY和MAX,求出部门id,部门名称,最高薪资

设该子查询生成的为T表

再用部门id和工资的值,到E表中去匹配

即,使用E表连接T表,连接条件为部门id和薪资,注意使用WHERE去除非最高薪资的

select
T4.name  as Department 
,T3.name  AS Employee 
,T4.salary as Salary 
from Employee T3
left join 
(
    select
    T2.id
    ,T2.name
    ,max(salary) as salary
    from Employee T1
    Left join Department T2
    on T1.departmentId = T2.id
    group by T2.name
) AS T4
on T3.salary = T4.salary and T3.departmentId = T4.id
where T4.id is not null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值