在某些情况下,我有一个表有三列date, user_id, amount
,其中date
存储了客户user_id
购买amount
美元的日期。
我想要的是制作一张新表,其中包含客户每天花在这一点上的总金额。
例如,对于一个特定的客户,在第一天(新表的第一行),total
将只是在第0天和第1天之间发生的amount
s的总和,而第二天它将是它在第0天和第2天之间的时间段变为:
(total
从第1天开始)+总和(从第1天到第2天)。
所以一般来说,第n天的total
是:
(来自第n-1天的total
)+总和(在第n-1天和第n天之间发生的amount
)
我想知道是否有办法使用sql定义这个递归结构,或者有人可以指出我正确的方向。希望这一切都有意义。谢谢。
在MySQL 8+中,您只需使用窗口函数:
select t.*,
sum(amount) over (partition by user_id order by date) as running_amount
from t;