力扣数据库:部门工资最高的员工

部门工资最高的员工
Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

IdNameSalaryDepartmentId
1Joe700001
2Jim900001
3Henry800002
4Sam600002
5Max900001

Department 表包含公司所有部门的信息。

IdName
1IT
2Sales

编写一个 SQL 查询,找出每个部门工资最高的员工。对于上述表,您的 SQL 查询应返回以下行(行的顺序无关紧要)。

DepartmentEmployeeSalary
ITMax90000
ITJim90000
SalesHenry80000

解释:
Max 和 Jim 在 IT 部门的工资都是最高的,Henry 在销售部的工资最高。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/department-highest-salary
思路
1. 首先分组查询每个部门最高工资,用id和department字段作为进一步查询的关键键对;
2. 根据键对,查询出每个部门最高工资员工的信息;
3. 内连接查询出具体的部门信息即可;

代码

select d.Name as'Department',e.Name as'Employee',e.Salary
from Department as d
inner join 
(
select Employee.*
from Employee 
where (Salary,DepartmentId) in(
select max(Salary), DepartmentId
from Employee
group by DepartmentId) 
)as e
on e.DepartmentId = d. Id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值