1. ホーム
  2. mysql

MySQLで累積和カラムを作成する

2023-08-21 10:32:28

質問

以下のようなテーブルがあります。

id   count
1    100
2    50
3    10

cumulative_sumという新しいカラムを追加したいので、テーブルはこのような感じになります。

id   count  cumulative_sum
1    100    100
2    50     150
3    10     160

これを簡単に行えるMySQLのupdateステートメントはありますか?これを達成する最良の方法は何ですか?

どのように解決するのですか?

パフォーマンスが問題であれば、MySQLの変数を使用することができます。

set @csum := 0;
update YourTable
set cumulative_sum = (@csum := @csum + count)
order by id;

あるいは cumulative_sum カラムを削除して、各クエリで計算することもできます。

set @csum := 0;
select id, count, (@csum := @csum + count) as cumulative_sum
from YourTable
order by id;

これは、実行中の方法で実行中の合計を計算します :)