2016-08-03 50 views
0

我試圖從'DT'中查找365天后'ID'的金額總和。以下是我正在處理的數據的一個示例。下表由購買日期,ID和金額組成。我想計算從「DT」開始365天后的ID所花費的金額。任何幫助,將不勝感激。謝謝。從購買日期起爲用戶追蹤365天的總金額

DT  ID AMT 
1/17/15 1 31.74 
1/23/15 1 14.33 
1/25/15 1 21.76 
3/5/15 1 150 
6/12/15 1 60 
4/23/16 1 16.86 
4/25/16 1 60 
7/1/16 1 15.57 
2/26/15 2 61.9 
3/1/15 2 15 
2/28/16 2 25 

我希望我的輸出是

DT  ID AMT  outstanding_amt 
1/17/15 1 31.74 31.74 
1/23/15 1 14.33 46.07 
1/25/15 1 21.76 67.83 
3/5/15 1 150  217.83 
6/12/15 1 60  277.83 
4/23/16 1 16.86 76.86 
4/25/16 1 60  136.86 
7/1/16 1 15.57 92.43 
2/26/15 2 61.9 61.9 
3/1/15 2 15  76.9 
2/28/16 2 25  40 

我已經試過sum(amt) over(partition by user_id)但是這給了我所有的日期累計總和。我不知道如何與日期條件條件它

回答

2

一種方法是相關子查詢:

select t.*, 
     (select sum(t2.amt) 
     from t t2 
     where t2.id = t.id and 
       t2.dt <= t.dt and 
       t2.dt > t.dt - interval '365' day 
     ) as outstanding_amt 
from t; 

這可能與(id, dt, amt)指數合理的性能。