トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-1 累計を取得
SQLパズル
売上テーブル
年月 金額
------ -----
200010 1500
200011 1000
200012 2000
200101 2500
200102 3000
200103 -2000
200104 3000
売上テーブルの、年月と金額と累計を出力する。
出力結果
年月 金額 累計
------ ----- -----
200010 1500 1500
200011 1000 2500
200012 2000 4500
200101 2500 7000
200102 3000 10000
200103 -2000 8000
200104 3000 11000
データ作成スクリプト
create Table 売上テーブル(
年月 number(6),
金額 number(4));
insert into 売上テーブル values(200010, 1500);
insert into 売上テーブル values(200011, 1000);
insert into 売上テーブル values(200012, 2000);
insert into 売上テーブル values(200101, 2500);
insert into 売上テーブル values(200102, 3000);
insert into 売上テーブル values(200103,-2000);
insert into 売上テーブル values(200104, 3000);
commit;
SQL
--■■■相関サブクエリを使用■■■
select 年月,金額,
(select sum(b.金額) from 売上テーブル b
where b.年月 <= a.年月) as 累計
from 売上テーブル a
order by 年月;
--■■■分析関数を使用■■■
select 年月,金額,
sum(金額) over (order by 年月) as 累計
from 売上テーブル
order by 年月;
--■■■自己結合を使用■■■
select a.年月,a.金額,sum(b.金額) as 累計
from 売上テーブル a,売上テーブル b
where a.年月 >= b.年月
group by a.年月,a.金額
order by a.年月;
解説