Department Highest Salary

medium hash map database group by

Problem

Write a SQL query to find employees who have the highest salary in each department.

SQL: SELECT d.name AS Department, e.name AS Employee, e.salary AS Salary FROM Employee e JOIN Department d ON e.departmentId = d.id WHERE (e.departmentId, e.salary) IN (SELECT departmentId, MAX(salary) FROM Employee GROUP BY departmentId);

Input(Joe, IT, 70000), (Henry, IT, 80000), (Sam, Sales, 60000), (Max, Sales, 90000)
Output[(IT, Henry, 80000), (Sales, Max, 90000)]

SELECT d.name AS Department, e.name AS Employee, e.salary AS Salary
FROM Employee e JOIN Department d ON e.departmentId = d.id
WHERE (e.departmentId, e.salary) IN
      (SELECT departmentId, MAX(salary) FROM Employee GROUP BY departmentId);
Time: O(n) Space: O(d)