SQL рекурсивная вставка - PullRequest
       25

SQL рекурсивная вставка

0 голосов
/ 22 февраля 2019

В некотором контексте у меня есть одна таблица с тремя столбцами date, user_id, amount, где date хранит дату, когда клиент user_id совершил покупку на amount долларов.

Я хочу создать новую таблицу с общей суммой денег, которую клиент ежедневно тратил до этого момента.

Например, для одного конкретного клиента в первый день (первая строка новой таблицы) total будет просто суммой amount с, которая имела место между днем ​​0 и днем ​​1,и для второго дня это будет сумма за период между днем ​​0 и днем ​​2, которая становится:

(total от дня 1) + сумма (от дня 1 до дня 2).

Таким образом, в общем случае total для n-го дня составляет:

(total со дня n-1) + сумма (amount, которая имела место между днем ​​n-1 идень n)

Я хочу знать, есть ли способ определить эту рекурсивную структуру с помощью sql или кто-то может указать мне правильное направление.Надеюсь, все это имеет смысл.Благодарю.

1 Ответ

0 голосов
/ 22 февраля 2019

В MySQL 8+ вы бы просто использовали оконные функции:

select t.*,
       sum(amount) over (partition by user_id order by date) as running_amount
from t;
...