SQL
리트코드(LeetCode) MySQL-Department Highest Salary
potatode
2022. 8. 5. 11:22
select d.name as Department, e.name as Employee, salary as Salary
from Employee as e
inner join Department as d
on e.departmentID=d.id
where (departmentID,salary) in
(select departmentID,max(salary) from Employee group by departmentID)
INNER JOIN에도 서브 쿼리를 쓸 수 있다.
select d.name as Department,
e.name as Employee,
salary as Salary
from Employee as e
inner join (select departmentID,max(salary) as maximum from Employee group by departmentID) as m
on m.departmentID=e.departmentID and m.maximum=e.salary
inner join Department as d
on e.departmentID=d.id
윈도우 함수를 이용하면
SELECT d.name as Department,
maxs.name as Employee,
maxs.salary as Salary
FROM (
SELECT *, MAX(salary) over (partition by departmentId) as max_salary
FROM Employee) as maxs
INNER JOIN Department as d
ON d.id=maxs.departmentId
WHERE maxs.salary = maxs.max_salary
SELECT d.name as Department,
maxs.name as Employee,
maxs.salary as Salary
FROM (
SELECT *, rank() over (partition by departmentId order by salary desc) as rank
FROM Employee) as maxs
INNER JOIN Department as d
ON d.id=maxs.departmentId
WHERE maxs.rank=1
max와 rank 모두 가능
반응형