2013-03-28 22 views
0

在下面的表如何使用前一行的累積添加進行INSERT?

---------------------------- 
| id | day | count | 
---------------------------- 
    1 2013-01-01 10 
    1 2013-01-05 20 
    1 2013-01-08 45 

在第二和第三行中的計數列是累積的,即20 =(10,從第一行+ 10附加計數)和(來自第二行+ 25附加計數20)45。第二行和第三行(以及更多)如何通過累加在Postgresql中插入?

注:額外的計數是在程序的變量讀取。因此,我們的目標是將此值存儲在Postgresql的「count」列中,但也要將其與最後一個條目按日期升序發現的「count」相加。

+1

你在哪裏採取從_additional count_? – 2013-03-28 11:12:29

回答

0

如果問題是有選擇的INSERT語句怎麼會是這樣的:

insert into x(id, day, count) 
select 1, current_timestamp, 
coalesce((select max(count) from x), 0) + 10; 

但是,這並不一定是解決問題的最好辦法。

1

既然你不說在哪裏做的附加計數來自我假設有一個額外計數柱:

select *, 
    sum(additional_count) over(order by "day") "count" 
from t 
order by "day" 

sum函數作爲窗口函數做總運行。當它使用over子句時,它是一個窗口函數。