Вы делаете рейтинг товаров по выручке внутри категории. Если два товара делят 2 место, следующий товар должен получить 3 место (без пропуска). Какая функция подходит лучше всего?

ADENSE_RANK
BRANK
CROW_NUMBER
DLEAD
Правильный ответ. DENSE_RANK присваивает одинаковое место равным значениям и не делает пропусков в нумерации.

Разбор

DENSE_RANK() дает одинаковый ранг равным значениям, а следующий ранг увеличивает на 1: 1, 2, 2, 3... Это подходит, когда места должны идти без пропусков. В RANK() после равенства появляются пропуски (1, 2, 2, 4...). ROW_NUMBER() вообще не выделяет одинаковые места: у каждой строки свой номер.

Проверь себя · 1/3разбор после ответа
В одной категории 4 товара с выручкой 100, 100, 90 и 80. Вычисляем RANK() OVER (ORDER BY revenue DESC). Какие ранги получат строки при сортировке по убыванию выручки?
Тренировать SQL в Telegram

Ещё вопросы по теме «Оконные функции»