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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
Нужно пронумеровать заказы каждого пользователя по времени покупки, начиная с 1, чтобы потом найти 1-й, 2-й, 3-й заказ. Какое выражение подходит?
Тренировать SQL в Telegram

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