К задачам

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

СредняяSQL
Лучше работает на десктопе
Оконные функцииDENSE_RANKТоп-K в группеCTE

Даны таблицы 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().
Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
05:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Топ-3 уникальных зарплат по департаментам — SQL задача — ML Mentor