トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-296 組み合わせ
SQLパズル
combテーブル
i
--
1
2
3
4
combテーブルからiを選ぶ組み合わせの
結果と件数を求める
【結果例】
1個選ぶ場合、下記の4件
1
2
3
4
2個選ぶ場合、下記の7件
1,1
1,2
1,3
1,4
2,3
2,4
3,4
3個選ぶ場合、下記の4件
1,2,3
1,2,4
1,3,4
2,3,4
4個選ぶ場合、下記の1件
1,2,3,4
データ作成スクリプト
create table comb(i number(1) primary key);
insert into comb
select RowNum
from all_catalog
where RowNum <= 4;
SQL
create or replace function print_comb(LEV in number) return varchar2 IS
件数 pls_Integer := 0;
WillOut varchar2(4000);
begin
for rec_Work in
(select substr(sys_connect_by_path(to_char(i),','),2) as 組み合わせ
from comb
where Level = LEV
connect by prior i < i) Loop
WillOut := WillOut || '■' || rec_Work.組み合わせ;
件数 := 件数 + 1;
end Loop;
return substr(WillOut,2) || '件数は' || to_char(件数) || '件';
end;
/
sho err
select RowNum as 引数,
print_comb(RowNum) as 結果
from all_catalog
where RowNum <= 4;
解説
階層問い合わせを使って、
組み合わせを列挙してます