LeetCode(数据库)- 部门工资最高的员工

【摘要】 题目链接:点击打开链接
 
题目大意:略。
 
解题思路:解决方案(1) 和 解决方案(2) 思路都是差不多的:先子查询查出每个部门的最高薪资,然后做下表关联拼接即可~区别无非在于子查询的关联上,前者用的是笛卡尔积,后者用的是 IN 语法(没想到 IN 还可以多个值同时去对齐吧)
 
AC 代码
— 解决方案(1)SELECT d.Name Departmen…

题目链接:点击打开链接

题目大意:略。

解题思路:解决方案(1) 和 解决方案(2) 思路都是差不多的:先子查询查出每个部门的最高薪资,然后做下表关联拼接即可~区别无非在于子查询的关联上,前者用的是笛卡尔积,后者用的是 IN 语法(没想到 IN 还可以多个值同时去对齐吧)

AC 代码


-- 解决方案(1)
SELECT d.Name Department, e.Name Employee, e.Salary
FROM Employee e
JOIN Department d
ON e.DepartmentId = d.Id,
(SELECT MAX(Salary) Salary, DepartmentId
FROM Employee
GROUP BY DepartmentId) rs
WHERE rs.Salary = e.Salary AND rs.DepartmentId = e.DepartmentId
-- 解决方案(2)
SELECT
Department.name AS 'Department',
Employee.name AS 'Employee',
Salary
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享