SQL で累積(数量、金額など)を取得する方法
文書番号:20342
SQL で数値型データの累積を取得する方法です。
例えば以下のように日ごとの売上実績数量や売上金額などを毎月の累積で取得したい場合などに便利です。
月 | 金額 | 累積 |
---|---|---|
4月 | 1000 | 1000 |
5月 | 1200 | 2200 |
6月 | 1500 | 3700 |
【実行手順】
-
テスト用のテーブルを作成して、サンプルデータを投入します。
CREATE TABLE WORK_DATA( 月度 smallint ,金額 decimal(18,0) ) INSERT INTO WORK_DATA VALUES(4,1000) INSERT INTO WORK_DATA VALUES(5,1200) INSERT INTO WORK_DATA VALUES(6,1500)
-
「WORK_DATA」テーブル(別名:A1)に対して同じ「WORK_DATA」テーブル(別名:A2)を
「A1 の月度が A2 以上のもの 」という条件で結合します。
SELECT A1.月度 ,A1.金額 ,A2.金額 FROM WORK_DATA A1 INNER JOIN WORK_DATA A2 ON A1.月度 >= A2.月度 ORDER BY A1.月度
月 A1.金額 A2.金額 4 1000 1000 5 1200 1000 5 1200 1200 6 1500 1000 6 1500 1200 6 1500 1500 -
これに対して 「月度」と「A1.金額」で GROUP BY して、「A2.金額」をSUMすると累計の結果を取得することができます。
SELECT A1.月度 ,A1.金額 ,SUM(A2.金額) AS 累積 FROM WORK_DATA A1 INNER JOIN WORK_DATA A2 ON A1.月度 >= A2.月度 GROUP BY A1.月度,A1.金額 ORDER BY A1.月度
月 金額 累積 4 1000 1000 5 1200 2200 6 1500 3700