0

次の表で

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

2 番目と 3 番目の行のカウント列は累積的です。つまり、20 = (最初の行の 10 + 追加の 10 カウント) と 45 (2 番目の行の 20 + 追加の 25 カウント) です。Postgresql の累積加算で 2 行目と 3 行目 (およびそれ以降) を挿入するにはどうすればよいですか?

注: 追加カウントは、プログラム内の変数から読み取られます。したがって、この値を Postgresql の「count」列に格納するだけでなく、最後のエントリで見つかった「count」を日付の昇順で追加することを目的としています。

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 に答える