Нарастающий итог считают SUM(amount) OVER с разделением по пользователю, порядком по дате и явной рамкой ROWS. При одинаковых датах нужен устойчивый дополнительный ключ.
Напишите SQL для добавления нарастающего итога суммы заказа в разрезе пользователя и даты.
Нарастающий итог считают SUM(amount) OVER с разделением по пользователю, порядком по дате и явной рамкой ROWS. При одинаковых датах нужен устойчивый дополнительный ключ.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нарастающий итог считают SUM(amount) OVER с разделением по пользователю, порядком по дате и явной рамкой ROWS. При одинаковых датах нужен устойчивый дополнительный ключ.
Для таблицы orders(order_id, user_id, order_dt, amount):
SELECT order_id, user_id, order_dt, amount,
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY order_dt, order_id
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS running_total
FROM orders
ORDER BY user_id, order_dt, order_id;
Это итог после каждого заказа. Если нужна одна строка на день, сначала агрегируйте суммы по user_id и дате, затем примените окно к дневным строкам. Валюту и обработку возвратов нужно согласовать до суммирования.