SQL递归插入

问题描述 投票:0回答:1

在某些情况下,我有一个表有三列date, user_id, amount,其中date存储了客户user_id购买amount美元的日期。

我想要的是制作一张新表,其中包含客户每天花在这一点上的总​​金额。

例如,对于一个特定的客户,在第一天(新表的第一行),total将只是在第0天和第1天之间发生的amounts的总和,而第二天它将是它在第0天和第2天之间的时间段变为:

total从第1天开始)+总和(从第1天到第2天)。

所以一般来说,第n天的total是:

(来自第n-1天的total)+总和(在第n-1天和第n天之间发生的amount

我想知道是否有办法使用sql定义这个递归结构,或者有人可以指出我正确的方向。希望这一切都有意义。谢谢。

mysql sql recursion recursive-query
1个回答
0
投票

在MySQL 8+中,您只需使用窗口函数:

select t.*,
       sum(amount) over (partition by user_id order by date) as running_amount
from t;
© www.soinside.com 2019 - 2024. All rights reserved.