トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

10-14 組み合わせごとの合計を取得

SQLパズル

テーブル1
Col1  Col2  Col3  Col4
----  ----  ----  ----
 10   10   30   10
 10   20   30   10
 10   20   40   10

テーブル2
Col1  Col2  Col3  Col4
----  ----  ----  ----
 10   10   10   10
 10   20   20   10
 10   20   30   10

テーブル1とテーブル2で
Col1,Col2,Col3の組み合わせごとの、Col4の合計を出力する。

出力結果
Col1  Col2  Col3  Col4
----  ----  ----  ----
  10    10    10    10
  10    10    30    10
  10    20    20    10
  10    20    30    20
  10    20    40    10

こちらを参考にさせていただきました


データ作成スクリプト

create table テーブル1(
Col1 number(2),
Col2 number(2),
Col3 number(2),
Col4 number(2));

create table テーブル2 as select * from テーブル1;

insert into テーブル1 values(10,10,30,10);
insert into テーブル1 values(10,20,30,10);
insert into テーブル1 values(10,20,40,10);
insert into テーブル2 values(10,10,10,10);
insert into テーブル2 values(10,20,20,10);
insert into テーブル2 values(10,20,30,10);
commit;


SQL

select Col1,Col2,Col3,sum(Col4) as Col4
from (select Col1,Col2,Col3,Col4 from テーブル1
union all select Col1,Col2,Col3,Col4 from テーブル2)
group by Col1,Col2,Col3
order by Col1,Col2,Col3;


解説

インラインビューでunion allで和集合を作って、
sum関数で合計を求めてます。