task RANK / DENSE_RANK · medium
Second-highest salary per department
For each department that has employees, return department and second_highest_salary: the second-highest distinct salary in that department.
what to return
- Columns
departmentsecond_highest_salaryin this order- Rows
- 5 rows · any order
- Watch for
- Equal salaries count once (distinct values).
- If a department has only one distinct salary, second_highest_salary is NULL.
- Skill
- Find the Nth distinct value per group, returning NULL when it doesn't exist. Refresher: Top N per group & ties →
expected result
Your query should return exactly these columns and values. Run it and compare.
expected result5 rows · any order
| department | second_highest_salary |
|---|---|
| Engineering | 180000 |
| Sales | 95000 |
| Finance | 85000 |
first 3 of 5 rows
data you can query
Sample rows from each table. Each column shows its type underneath; → marks a link to another table.
employees7 columns · 20 rows
| idinteger · key | nametext | manager_idinteger → employees | department_idinteger → departments | titletext | salaryreal | hired_attext |
|---|---|---|---|---|---|---|
| 1 | Ada Moreno | NULL | NULL | CEO | 250000 | 2019-03-01 |
| 2 | Bruno Costa | 1 | 1 | VP Engineering | 180000 | 2019-06-15 |
| 3 | Carmen Diaz | 1 | 2 | VP Sales | 150000 | 2020-01-10 |
| 4 | Dev Patel | 2 | 1 | Engineering Manager | 140000 | 2020-05-04 |
| 5 | Elif Kaya | 4 | 1 | Senior Engineer | 145000 | 2021-02-01 |
showing 5 of 20 rows
departments4 columns · 6 rows
| idinteger · key | nametext | locationtext | budgetreal |
|---|---|---|---|
| 1 | Engineering | Lisbon | 1100000 |
| 2 | Sales | Austin | 450000 |
| 3 | Finance | Austin | 250000 |
| 4 | People | Lisbon | 150000 |
| 5 | Design | Remote | 305000 |
showing 5 of 6 rows
solution.sql
Hints and the answer are always available. Using them counts the question as solved with help.