SQL递归插入

时间:2019-02-22 18:34:55

标签: mysql sql recursion recursive-query

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

我想要的是用客户在该点之前每天花费的总金额制作一张新桌子。

例如,对于一个特定的客户,在第一天(新表的第一行),total将是在第0天到第1天之间发生的amount s的总和,第二天将是第0天到第2天之间的时间总和,即为

({total从第一天开始)+总和(从第一天到第二天)。

因此,通常第n天的total是:

(从第n-1天开始的{total)+ sum(amount在第n-1天到第n天之间发生的时间)

我想知道是否有一种方法可以使用sql定义此递归结构,或者是否有人可以将我指向正确的方向。希望所有这些都是有道理的。谢谢。

1 个答案:

答案 0 :(得分:0)

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

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