请考虑下表:
用户 | 日期 | 数量 |
---|---|---|
约翰 | 2022 年 1 月 1 日 | 40 |
约翰 | 2022 年 1 月 2 日 | -30 |
约翰 | 2022 年 1 月 6 日 | 50 |
... | ... | ... |
杰克 | 2022 年 4 月 1 日 | 80 |
杰克 | 2022 年 4 月 1 日 | -60 |
我们有约翰的三条记录和杰克的两条记录。在每个日期中,用户要么向金额字段添加一个值(正值),要么从中减去一个值(负值)。
金额总和未发生变化的天数很重要。
例如,从1/1/2022到1/2/2022,dear John 的值是 40。但是在1/2/2022,金额减少了 30。因此,30 天(从1/1到1/2 ), 数量等于 40, 直到1/6 , 总量 ( 40 - 30 ) 保持不变约 120 天。最后,直到今天(今天是8/23),金额的总和将等于40 - 30 + 50 = 60。
问题:
- 如何计算这些间隔以获得天数?
- 如何为所有用户获得这些间隔?
我阅读了有关 Window 或 CTE 的信息,但无济于事。
我为什么问这个问题?
数据库记录的数量已经增加到大约一百万条,对于 21,000 个用户,我们必须获取每个区间的长度并乘以之前记录的总量。
预期输出:
例如,对于 John,我希望得到以下输出:
40 × 30(days) + (40 - 30) × 60 (days) + (40 - 30 + 50) × 53 (days)