トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
3-32 Grouping_ID関数
SQLパズル
verifyテーブル
ColA ColB ColC ColD
---- ---- ---- ----
10 10 20 30
40 50 60 70
80 90 100 110
120 130 140 150
Grouping_ID関数とgrouping関数について考察します
データ作成スクリプト
create table verify(
ColA number(3),
ColB number(3),
ColC number(3),
ColD number(3));
insert into verify values( 10, 10, 20, 30);
insert into verify values( 40, 50, 60, 70);
insert into verify values( 80, 90,100,110);
insert into verify values(120,130,140,150);
commit;
SQL
col ColA for 9999
col ColB for 9999
col ColC for 9999
col ColD for 9999
col GID1 for 9999
col GID2 for 9999
col GColA for 99999
col GColB for 99999
col GColC for 99999
col GColD for 99999
select
ColA,ColB,ColC,ColD,
Grouping_ID(ColA,ColB,ColC,ColD) as GID1,
Bin_To_Num(grouping(ColA),grouping(ColB),grouping(ColC),grouping(ColD)) as GID2,
grouping(ColA) as GColA,
grouping(ColB) as GColB,
grouping(ColC) as GColC,
grouping(ColD) as GColD
from verify
group by cube(ColA,ColB,ColC,ColD)
order by GID1,ColA,ColB,ColC,ColD;
COLA■COLB■COLC■COLD■GID1■GID2■GCOLA■GCOLB■GCOLC■GCOLD
----■----■----■----■----■----■-----■-----■-----■-----
10■ 10■ 20■ 30■ 0■ 0■ 0■ 0■ 0■ 0
40■ 50■ 60■ 70■ 0■ 0■ 0■ 0■ 0■ 0
80■ 90■ 100■ 110■ 0■ 0■ 0■ 0■ 0■ 0
120■ 130■ 140■ 150■ 0■ 0■ 0■ 0■ 0■ 0
10■ 10■ 20■null■ 1■ 1■ 0■ 0■ 0■ 1
40■ 50■ 60■null■ 1■ 1■ 0■ 0■ 0■ 1
80■ 90■ 100■null■ 1■ 1■ 0■ 0■ 0■ 1
120■ 130■ 140■null■ 1■ 1■ 0■ 0■ 0■ 1
10■ 10■null■ 30■ 2■ 2■ 0■ 0■ 1■ 0
40■ 50■null■ 70■ 2■ 2■ 0■ 0■ 1■ 0
80■ 90■null■ 110■ 2■ 2■ 0■ 0■ 1■ 0
120■ 130■null■ 150■ 2■ 2■ 0■ 0■ 1■ 0
10■ 10■null■null■ 3■ 3■ 0■ 0■ 1■ 1
40■ 50■null■null■ 3■ 3■ 0■ 0■ 1■ 1
80■ 90■null■null■ 3■ 3■ 0■ 0■ 1■ 1
120■ 130■null■null■ 3■ 3■ 0■ 0■ 1■ 1
10■null■ 20■ 30■ 4■ 4■ 0■ 1■ 0■ 0
40■null■ 60■ 70■ 4■ 4■ 0■ 1■ 0■ 0
80■null■ 100■ 110■ 4■ 4■ 0■ 1■ 0■ 0
120■null■ 140■ 150■ 4■ 4■ 0■ 1■ 0■ 0
10■null■ 20■null■ 5■ 5■ 0■ 1■ 0■ 1
40■null■ 60■null■ 5■ 5■ 0■ 1■ 0■ 1
80■null■ 100■null■ 5■ 5■ 0■ 1■ 0■ 1
120■null■ 140■null■ 5■ 5■ 0■ 1■ 0■ 1
10■null■null■ 30■ 6■ 6■ 0■ 1■ 1■ 0
40■null■null■ 70■ 6■ 6■ 0■ 1■ 1■ 0
80■null■null■ 110■ 6■ 6■ 0■ 1■ 1■ 0
120■null■null■ 150■ 6■ 6■ 0■ 1■ 1■ 0
10■null■null■null■ 7■ 7■ 0■ 1■ 1■ 1
40■null■null■null■ 7■ 7■ 0■ 1■ 1■ 1
80■null■null■null■ 7■ 7■ 0■ 1■ 1■ 1
120■null■null■null■ 7■ 7■ 0■ 1■ 1■ 1
null■ 10■ 20■ 30■ 8■ 8■ 1■ 0■ 0■ 0
null■ 50■ 60■ 70■ 8■ 8■ 1■ 0■ 0■ 0
null■ 90■ 100■ 110■ 8■ 8■ 1■ 0■ 0■ 0
null■ 130■ 140■ 150■ 8■ 8■ 1■ 0■ 0■ 0
null■ 10■ 20■null■ 9■ 9■ 1■ 0■ 0■ 1
null■ 50■ 60■null■ 9■ 9■ 1■ 0■ 0■ 1
null■ 90■ 100■null■ 9■ 9■ 1■ 0■ 0■ 1
null■ 130■ 140■null■ 9■ 9■ 1■ 0■ 0■ 1
null■ 10■null■ 30■ 10■ 10■ 1■ 0■ 1■ 0
null■ 50■null■ 70■ 10■ 10■ 1■ 0■ 1■ 0
null■ 90■null■ 110■ 10■ 10■ 1■ 0■ 1■ 0
null■ 130■null■ 150■ 10■ 10■ 1■ 0■ 1■ 0
null■ 10■null■null■ 11■ 11■ 1■ 0■ 1■ 1
null■ 50■null■null■ 11■ 11■ 1■ 0■ 1■ 1
null■ 90■null■null■ 11■ 11■ 1■ 0■ 1■ 1
null■ 130■null■null■ 11■ 11■ 1■ 0■ 1■ 1
null■null■ 20■ 30■ 12■ 12■ 1■ 1■ 0■ 0
null■null■ 60■ 70■ 12■ 12■ 1■ 1■ 0■ 0
null■null■ 100■ 110■ 12■ 12■ 1■ 1■ 0■ 0
null■null■ 140■ 150■ 12■ 12■ 1■ 1■ 0■ 0
null■null■ 20■null■ 13■ 13■ 1■ 1■ 0■ 1
null■null■ 60■null■ 13■ 13■ 1■ 1■ 0■ 1
null■null■ 100■null■ 13■ 13■ 1■ 1■ 0■ 1
null■null■ 140■null■ 13■ 13■ 1■ 1■ 0■ 1
null■null■null■ 30■ 14■ 14■ 1■ 1■ 1■ 0
null■null■null■ 70■ 14■ 14■ 1■ 1■ 1■ 0
null■null■null■ 110■ 14■ 14■ 1■ 1■ 1■ 0
null■null■null■ 150■ 14■ 14■ 1■ 1■ 1■ 0
null■null■null■null■ 15■ 15■ 1■ 1■ 1■ 1
解説
GID1とGID2に注目すると、
Grouping_ID(ColA,ColB,ColC,ColD) = Bin_To_Num(ColA,ColB,ColC,ColD)
が成立していることが分かります。
マニュアル(Grouping_ID関数)(英語)
マニュアル(Grouping_ID関数)