При ORDER BY количества DESC значения 5, 5, 3, 3 получат RANK: 1, 1, 3, 3 и DENSE_RANK: 1, 1, 2, 2.
У нас 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.
Обе функции присваивают равным значениям одинаковый ранг. RANK оставляет пропуски после группы равных строк, DENSE_RANK нумерует разные группы без пропусков. Если добавить уникальный идентификатор в оконный ORDER BY, строки перестанут быть равными по всей сортировке, и результат изменится. Порядок вывода строк задаётся отдельным внешним ORDER BY.