Вы написали SUM(amount) OVER (ORDER BY paid_at) и ожидали накопительную сумму по каждому пользователю, но сумма растет сквозь всех пользователей. Что нужно добавить в OVER, чтобы накопление считалось отдельно по каждому пользователю?

AДобавить PARTITION BY user_id
BУбрать ORDER BY paid_at
CДобавить GROUP BY user_id
DЗаменить SUM на RANK
Правильный ответ. PARTITION BY разделяет расчет окна на независимые группы.

Разбор

Без PARTITION BY окно одно на весь набор строк, поэтому кумулятивная сумма считается глобально. Добавив PARTITION BY user_id, вы получите независимую кумулятивную сумму внутри каждого пользователя, а ORDER BY paid_at задаст порядок накопления по времени.

Проверь себя · 1/3разбор после ответа
Вы написали SUM(amount) OVER (ORDER BY paid_at) и ожидали накопительную сумму по каждому пользователю, но сумма растет сквозь всех пользователей. Что нужно добавить в OVER, чтобы накопление считалось отдельно по каждому пользователю?
Тренировать SQL в Telegram

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