我正在尝试找出 SQL 来计算每日配额系统的运行总计。系统是这样工作的...
用户每天获得 2 个“消耗品”的配额。如果他们全部用完,第二天他们会得到另一个 2。如果他们以某种方式过度使用它们(使用超过 2 个),第二天他们仍然会得到 2 个(他们不能有负余额)。如果他们不全部使用它们,则剩余部分会持续到第二天(可以持续到下一天,等等......)。
这是用作验证的数据图表。它被安排为当天的配额,当天使用的金额,当天结束时剩余的金额:
2 - 2 - 0
2 - 0 - 2
4 - 3 - 1
3 - 0 - 3
5 - 7 - 0
2 - 1 - 1
3 - 0 - 3
5 - 2 - 3
5 - 1 - 4
6 - 9 - 0
开始的 SQL 是:
WITH t(x, y) AS (
VALUES (2, '2013-09-16'),
(0, '2013-09-17'),
(3, '2013-09-18'),
(0, '2013-09-19'),
(7, '2013-09-20'),
(1, '2013-09-21'),
(0, '2013-09-22'),
(2, '2013-09-23'),
(1, '2013-09-24'),
(9, '2013-09-25')
)
对于我的一生,尝试使用语句和窗口聚合进行递归,我无法弄清楚如何使其工作(但我当然可以看到模式)。
它应该类似于 2 - x + SUM(previous row),但我不知道如何将其放入 SQL 中。