Что именно посчитает выражение SUM(amount) OVER (PARTITION BY campaign_id ORDER BY event_time) в таблице платежей по кампаниям?

AОдин общий накопительный итог SUM(amount) по всем кампаниям сразу, упорядоченный по event_time без разбиения по campaign_id
BПо одной строке на каждое значение campaign_id с итоговым SUM(amount) без учёта порядка event_time и без накопления
CСначала отсортирует все строки по event_time, а затем разделит на группы по campaign_id и пересчитает SUM(amount) заново
DНакопительный итог SUM(amount) отдельно внутри каждой группы campaign_id, в порядке event_time для каждого окна
Правильный ответ. PARTITION BY задаёт независимые окна по группам, а ORDER BY — порядок накопления внутри каждой группы.

Разбор

Окно разбивается по campaign_id, поэтому суммы считаются независимо для каждой кампании. Внутри каждой кампании строки упорядочиваются по event_time, и SUM(amount) даёт кумулятивный итог на каждой строке. Это полезно для построения накопительных графиков расходов или выручки по кампаниям, не теряя детализацию по событиям.

Проверь себя · 1/3разбор после ответа
Вы хотите сравнить текущую метрику с метрикой следующего периода во временном ряду. Какая оконная функция возвращает «следующее» значение относительно текущей строки по заданному порядку сортировки?
Тренировать SQL в Telegram

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