Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
leetcode刷题184部门工资最高的员工
前文
本文为leetcode数据库类型题目,题目序号184,主要考察数据库查询的知识,题目链接https://leetcode-cn.com/problems/department-highest-salary/。
题目信息
表: Employee
+--------------+---------+ | 列名 | 类型 | +--------------+---------+ | id | int | | name | varchar | | salary | int | | departmentId | int | +--------------+---------+ id是此表的主键列。 departmentId是Department表中ID的外键。 此表的每一行都表示员工的ID、姓名和工资。它还包含他们所在部门的ID。
表: Department
+-------------+---------+ | 列名 | 类型 | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ id是此表的主键列。 此表的每一行都表示一个部门的ID及其名称。
编写SQL查询以查找每个部门中薪资最高的员工。
解题思路
根据题目信息可知,本题目想要查询某个部门的最高员工工资。而现在有若干条工资数据,分别关联了一条部门信息。根据这个信息,很容易联想到采用group by关键字。但有一点需要注意,group by关键字只能对一个字段进行聚合处理。而本题目中当对部门信息及工资聚合时,还需要对于员工其他信息关联。因此本题的解答中,在聚合的结果又进行了额外的查询判断。根据员工信息,工资及部门id与聚合的结果做对应即可。以此方式,即可得到该题目的答案。
解题答案
select d.Name as Department, e.Name as Employee, e.Salary from Employee e,Department d where e.DepartmentId=d.id and (e.Salary,e.DepartmentId) in (select max(Salary),DepartmentId from Employee group by DepartmentId);
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。