跳到主要内容

184.部门工资最高的员工

序号题目难度
184题目链接中等

题目大意​

查找出每个部门中薪资最高的员工。 按 任意顺序 返回结果表。 查询结果格式如下例所示。

表: Employee

列名类型
idint
namevarchar
salaryint
departmentIdint

在 SQL 中,id是此表的主键。 departmentId 是 Department 表中 id 的外键(在 Pandas 中称为 join key)。 此表的每一行都表示员工的 id、姓名和工资。它还包含他们所在部门的 id。

表: Department

列名类型
idint
namevarchar

在 SQL 中,id 是此表的主键列。 此表的每一行都表示一个部门的 id 及其名称。

示例​

输入​

Employee 表:

idnamesalarydepartmentId
1Joe700001
2Jim900001
3Henry800002
4Sam600002
5Max900001

Department 表:

idname
1IT
2Sales

输出:​

DepartmentEmployeeSalary
ITJim90000
SalesHenry80000
ITMax90000

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

参考答案​

with t1 as(
select
DepartmentId
,max(salary) as max_salary
from employee
group by DepartmentId
)
select
t3.name AS `Department`
,t2.name AS `Employee`
,Salary
from Employee as t2
left join t1
on t2.Salary = t1.max_salary
and t2.DepartmentId = t1.DepartmentId
join Department as t3
on t1.DepartmentId = t3.Id
where t1.DepartmentId is not null
;