Вы делаете рейтинг товаров по выручке внутри категории. Если два товара делят 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разбор после ответа
Вы написали SUM(amount) OVER (ORDER BY paid_at) и ожидали накопительную сумму по каждому пользователю, но сумма растет сквозь всех пользователей. Что нужно добавить в OVER, чтобы накопление считалось отдельно по каждому пользователю?
Тренировать SQL в Telegram

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