У нас ORDER BY по количеству заказов, и у нас идёт два заказа по 5, ещё два заказа по 3. Как себя поведёт RANK() и как DENSE_RANK()?

При ORDER BY количества DESC значения 5, 5, 3, 3 получат RANK: 1, 1, 3, 3 и DENSE_RANK: 1, 1, 2, 2.

Короткий ответ

Что ответить на собеседовании

При ORDER BY количества DESC значения 5, 5, 3, 3 получат RANK: 1, 1, 3, 3 и DENSE_RANK: 1, 1, 2, 2.

Подробный разбор

Ответ с пояснениями

При ORDER BY количества DESC значения 5, 5, 3, 3 получат RANK: 1, 1, 3, 3 и DENSE_RANK: 1, 1, 2, 2.

Обе функции присваивают равным значениям одинаковый ранг. RANK оставляет пропуски после группы равных строк, DENSE_RANK нумерует разные группы без пропусков. Если добавить уникальный идентификатор в оконный ORDER BY, строки перестанут быть равными по всей сортировке, и результат изменится. Порядок вывода строк задаётся отдельным внешним ORDER BY.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее