2013-03-28 38 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子句时,它是一个窗口函数。