
力扣数据库:部门工资最高的员工
发布日期:2021-05-13 22:15:56
浏览次数:16
分类:精选文章
本文共 993 字,大约阅读时间需要 3 分钟。
思路
按部门分组查询最大工资:使用 GROUP BY DepartmentId
按照每个部门的 Id
进行分组。在每个组内使用 MAX(Salary)
找到最高的工资。这一步可以确保我们仅保留每个部门中工资最高的员工信息。
保留所有最高工资的员工信息:在 GROUP BY
中使用 HAVING
子句来进行过滤。如果有多个员工在同一部门的工资是最高的,这一步可以确保所有这些员工的信息都会被保留。
连接到部门表:使用 LEFT JOIN
确保所有部门即使在没有员工的情况下也会显示在结果中。连接到 Department
表,可以获取部门的名称。
代码
SELECT d.Name AS Department, e.Name AS Employee, e.SalaryFROM Department AS dLEFT JOIN ( SELECT e.*, MAX(Salary) AS MaxSalary FROM Employee AS e GROUP BY e.DepartmentId HAVING MaxSalary = e.Salary) AS e_selected ON d.Id = e.DepartmentId
解释
SELECT d.Name AS Department, e.Name AS Employee, e.Salary
:从部门表d
中获取部门名称,并从e_selected
中获取员工名称及其最终确认到的最高工资。LEFT JOIN
:确保即使某部门没有员工,结果中仍然会显示该部门。子查询
SELECT e.*, MAX(Salary) AS MaxSalary FROM Employee AS e GROUP BY e.DepartmentId HAVING MaxSalary = e.Salary
:GROUP BY e.DepartmentId
:按部门Id
分组。MAX(Salary)
:在组内找出最高的工资。HAVING MaxSalary = e.Salary
:只保留那些刚好等于组内最高工资的员工信息。如果有多个员工在同一部门的工资相同,这些员工都会被保留。
用这种方法可以既高效又清晰地得到每个部门的工资最高员工信息。无论是单一部门的最高工资员工,还是多个员工的最高工资信息,都可以通过这一查询轻松获取。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月03日 07时43分42秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
函数与高级变量
2019-03-11
机器学习:sklearn实现黑色星期五
2019-03-11
键盘事件
2019-03-11
超分辨率/去噪
2019-03-11
弱监督
2019-03-11
二 召回算法
2019-03-11
2020-11月计划实施表
2019-03-11
个人常用网络
2019-03-11
图神经网络
2019-03-11
数据分析
2019-03-11
objects
2019-03-11
折线图
2019-03-11
常识:
2019-03-11
注册页面案例
2019-03-11
关系抽取
2019-03-11
WinForm基础
2019-03-11
np.bincount(x)的简单解释
2019-03-11
工业视觉(机器视觉--Machine Vision(MV))
2019-03-11
OpenCV图像通道的合并与分离
2019-03-11
架构师
2019-03-11