SQL LeetCode: 184. Department Highest Salary

Pallavi Mirajkar Dantkale
2 min readApr 1, 2021

--

184. Department Highest Salary

Medium

SQL Schema

The Employee the table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Jim | 90000 | 1 |
| 3 | Henry | 80000 | 2 |
| 4 | Sam | 60000 | 2 |
| 5 | Max | 90000 | 1 |
+----+-------+--------+--------------+

The Department table holds all departments of the company.

+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+

Write a SQL query to find employees who have the highest salary in each of the departments. For the above tables, your SQL query should return the following rows (order of rows does not matter).

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Jim | 90000 |
| Sales | Henry | 80000 |
+------------+----------+--------+

Explanation:

Max and Jim both have the highest salary in the IT department and Henry has the highest salary in the Sales department.

  1. Using dense_rank window function

WITH CTE AS (
SELECT
d.Name as Department,
e.Name as Employee,
e.Salary as Salary,
dense_rank() OVER (partition by e.DepartmentId Order by Salary desc) as dr_salary
FROM
Employee e
LEFT JOIN Department d
ON e.DepartmentId = d.Id )

SELECT
Department, Employee, Salary
FROM
CTE
WHERE dr_salary = 1
and Department is not null

2. Using Group By

WITH CTE AS (
SELECT
max(Salary) as Salary, DepartmentId
FROM
Employee
group by DepartmentId )

SELECT d.Name as Department, e.Name as Employee, c.Salary
FROM
Employee e
JOIN CTE c
ON e.DepartmentId = c.DepartmentId
and c.Salary = e.Salary
JOIN Department d
ON d.Id = e.departmentId

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Pallavi Mirajkar Dantkale
Pallavi Mirajkar Dantkale

Written by Pallavi Mirajkar Dantkale

QA Engineer / Data Analyst — Highly committed to Quality Assurance and data analysis, advocate for quality and add the right value to the organization.

No responses yet

Write a response