0

在下表中

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

第二和第三行的计数列是累积的,即 20 =(第一行的 10 + 10 个额外的计数)和 45(第二行的 20 + 25 个额外的计数)。如何在 Postgresql 中使用累积添加插入第二行和第三行(以及更多行)?

注意:附加计数是从程序中的变量中读取的。因此,目的是将这个值存储在 Postgresql 的“计数”列中,但也将它与最后一个条目找到的“计数”按日期升序添加。

4

2 回答 2

1

由于您没有说额外计数来自哪里,我假设有一个额外的计数列:

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

sum作为窗口函数的函数进行运行总计。当它使用over子句时,它是一个窗口函数。

于 2013-03-28T11:16:12.837 回答
0

如果问题是带有 select 的插入语句可能如下所示:

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

但这不一定是解决问题的最佳方法。

于 2013-03-28T11:20:52.810 回答