在某些情况下,我有一个带有三列date, user_id, amount
的表,其中date
存储了客户user_id
以amount
美元进行购买的日期。
我想要的是用客户在该点之前每天花费的总金额制作一张新桌子。
例如,对于一个特定的客户,在第一天(新表的第一行),total
将是在第0天到第1天之间发生的amount
s的总和,第二天将是第0天到第2天之间的时间总和,即为
({total
从第一天开始)+总和(从第一天到第二天)。
因此,通常第n天的total
是:
(从第n-1天开始的{total
)+ sum(amount
在第n-1天到第n天之间发生的时间)
我想知道是否有一种方法可以使用sql定义此递归结构,或者是否有人可以将我指向正确的方向。希望所有这些都是有道理的。谢谢。
答案 0 :(得分:0)
在MySQL 8+中,您将只使用窗口函数:
select t.*,
sum(amount) over (partition by user_id order by date) as running_amount
from t;