トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
3-23 大小関係を出力
SQLパズル
ValueListテーブル
ID Value
-- -----
A 100
B 90
C 80
D 75
E 75
F 75
G 70
H 70
I 60
Valueの大小関係を示す、
不等式と等式を出力する
出力結果
大小関係
-----------------
A>B>C>D=E=F>G=H>I
データ作成スクリプト
create table ValueList(
ID char(1),
Value number(3));
insert into ValueList values('A',100);
insert into ValueList values('B', 90);
insert into ValueList values('C', 80);
insert into ValueList values('D', 75);
insert into ValueList values('E', 75);
insert into ValueList values('F', 75);
insert into ValueList values('G', 70);
insert into ValueList values('H', 70);
insert into ValueList values('I', 60);
commit;
SQL
col 大小関係 for a20
--■■■case式を使う方法■■■
select max(substr(replace(sys_connect_by_path(
case when prior Value = Value then '='
else '>' end || ID,','),','),2)) as 大小関係
from (select ID,Value,
Row_Number() over(order by Value desc,ID) as RowNumber
from ValueList)
start with RowNumber = 1
connect by prior RowNumber = RowNumber-1;
--■■■decode関数を使う方法■■■
select max(substr(replace(sys_connect_by_path(
decode(prior Value,Value,'=','>') || ID,','),','),2)) as 大小関係
from (select ID,Value,
Row_Number() over(order by Value desc,ID) as RowNumber
from ValueList)
start with RowNumber = 1
connect by prior RowNumber = RowNumber-1;
解説
prior ValueとValueを比較して、
大小関係を取得してます