SUM() OVER (PARTITION BY) против GROUP BY: сколько строк вернёт запрос
В таблице orders пять строк: три заказа клиента 1 и два заказа клиента 2.
SELECT user_id, order_id, amount,
SUM(amount) OVER (PARTITION BY user_id) AS user_total
FROM orders;
Что вернёт запрос?
- Две строки — по одной на клиента: оконная функция схлопывает строки так же, как GROUP BY user_id
- Пять строк; в user_total у каждой строки полная сумма заказов её клиента
- Пять строк; в user_total нарастающий итог по заказам клиента
- Ошибку: SUM без GROUP BY user_id выполнить нельзя
