トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-3 sum関数とdecode関数
SQLパズル
売上テーブル
月 商品 金額
-- ---- ----
1 A 1000
1 B 2000
1 C 1700
2 A 1200
2 C 1800
3 A 2500
3 B 3000
売上テーブルから、
金額の、月ごとの合計と総合計を出力する。
出力結果
商品 1月 2月 3月 金額計
---- ---- ---- ---- ------
A 1000 1200 2500 4700
B 2000 0 3000 5000
C 1700 1800 0 3500
データ作成スクリプト
create Table 売上(
月 char(1),
商品 char(1),
金額 number(4));
insert into 売上 values('1','A',1000);
insert into 売上 values('1','B',2000);
insert into 売上 values('1','C',1700);
insert into 売上 values('2','A',1200);
insert into 売上 values('2','C',1800);
insert into 売上 values('3','A',2500);
insert into 売上 values('3','B',3000);
commit;
SQL
select 商品,
sum(decode(月,1,金額,0)) as "1月",
sum(decode(月,2,金額,0)) as "2月",
sum(decode(月,3,金額,0)) as "3月",
sum(金額) as 金額計
from 売上
group by 商品
order by 商品;
解説
商品列でグループ化して、
decode関数で、集計するかしないかを分岐させてます。