毎日の割り当てシステムの現在の合計を計算するための SQL を理解しようとしています。システムは次のように機能します...
ユーザーは毎日 2 つの「消耗品」のクォータを取得します。彼らがそれらをすべて使い果たした場合、翌日には別の2が得られます。何らかの理由でそれらを使いすぎた場合(2つ以上使用した場合)、翌日も2になります(マイナスの残高を持つことはできません)。それらがすべて使用されない場合、残りは翌日に持ち越されます(次の日に持ち越される可能性があります...)。
検証として使用するデータのグラフを次に示します。1 日のクォータ、その日に使用された量、1 日の終わりに残った量としてレイアウトされます。
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(前の行) のようなものになるはずですが、それを SQL に入れる方法がわかりません。