Топ-3 уникальных зарплат по департаментам

MediumSQL
05:00
Лучше работает на десктопе
Window FunctionsDENSE_RANKTop K per GroupCTE
Мой собес35:09-49:15fairmarkit-2025-09-18-tech1-lead-sql.m4aСтраница собеса

Даны таблицы Employee и Department.

Нужно вывести всех сотрудников, зарплата которых входит в top-3 уникальных зарплат внутри их департамента.

Если несколько сотрудников получают одинаковую зарплату, они должны получить одинаковый ранг и все попасть в результат, если эта зарплата входит в top-3 уникальных зарплат департамента.

Схема

CREATE TABLE Department (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL
);

CREATE TABLE Employee (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  salary INTEGER NOT NULL,
  departmentId INTEGER NOT NULL,
  FOREIGN KEY (departmentId) REFERENCES Department(id)
);

Формат вывода

Верните колонки:

  • Department — название департамента;
  • Employee — имя сотрудника;
  • Salary — зарплата.

Отсортируйте результат по Department ASC, Salary DESC, Employee ASC.

Важный нюанс

top-3 уникальных зарплат означает, что для зарплат 200, 200, 100, 50 ранги должны быть 1, 1, 2, 3. Для этого нужен DENSE_RANK(), а не ROW_NUMBER().
Консоль
Нажмите Run или Ctrl+Enter для запуска