cswork / libraryOpen practice workspace

Coding questions · Amazon

Find Top-3 Salaries Per Department Using SQL

This question evaluates SQL data manipulation competency, focusing on group-wise aggregation, ordering, and selecting the top-N salary values within each department.

employees

+----+---------+--------+---------+
| id | name    | salary | dept_id |
+----+---------+--------+---------+
| 1  | Alice   | 120000 | 10      |
| 2  | Bob     |  90000 | 10      |
| 3  | Charlie | 115000 | 20      |
| 4  | David   | 130000 | 10      |
| 5  | Eve     | 110000 | 20      |
+----+---------+--------+---------+
Scenario

Employee compensation analysis across departments

Question

Given an employees table with salary and department columns, write SQL to return the top-3 salary amounts in each department (it’s okay if fewer than three employees tie for a salary amount).

Hints

Use window functions (ROW_NUMBER/RANK/DENSE_RANK) or MAX subqueries to isolate the three highest salaries per department.