トップページに戻る    次の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関数で、集計するかしないかを分岐させてます。