В IT ранги будут 1, 1, 2, в HR — 1, 2. Равная зарплата получает один ранг, а следующий ранг идёт без пропуска.
Как DENSE_RANK ранжирует зарплаты внутри отделов
В IT ранги будут 1, 1, 2, в HR — 1, 2. Равная зарплата получает один ранг, а следующий ранг идёт без пропуска.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Есть сотрудники: IT — Анна 100, Борис 100, Вера 80; HR — Глеб 90, Дина 70. Какие значения даст DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC)?
Ответ
В IT ранги будут 1, 1, 2, в HR — 1, 2. Равная зарплата получает один ранг, а следующий ранг идёт без пропуска.
PARTITION BY начинает отдельную последовательность для каждого отдела. Для RANK после двух первых мест следующий ранг в IT был бы 3. Добавление уникального ID в оконный ORDER BY разрушит равенство строк по зарплате и изменит ранжирование. Порядок отображения результата задаётся отдельным внешним ORDER BY.