【发布时间】:2021-12-22 01:33:12
【问题描述】:
我有下表显示客户购买某种产品的时间。我的数据是CustomerID, Amount, Dat。我正在尝试创建列ProductsIn30Days,它表示客户在Dat-30 天(包括当天)范围内购买了多少产品。
例如,ProductsIn30Days for CustomerID 1 on Dat 25.3.2020 是 7,因为客户在 2020 年 3 月 25 日购买了 2 件产品,在 2020 年 3 月 24 日又购买了 5 件产品,这在 25.3 之前的 30 天内.2020.
| CustomerID | Amount | Dat | ProductsIn30Days |
|---|---|---|---|
| 1 | 1 | 23.3.2018 | 1 |
| 1 | 2 | 24.3.2020 | 2 |
| 1 | 3 | 24.3.2020 | 5 |
| 1 | 2 | 25.3.2020 | 7 |
| 1 | 2 | 24.5.2020 | 2 |
| 1 | 1 | 15.6.2020 | 3 |
| 2 | 7 | 24.3.2017 | 7 |
| 2 | 2 | 24.3.2020 | 2 |
我尝试过这样的事情但没有成功,因为分区只能在单个日期上工作,而不是在我需要的范围内:
select CustomerID, Amount, Dat,
sum(Amount) over (partition by CustomerID, Dat-30)
from table
感谢您的帮助。
【问题讨论】: