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

5-52 order by句で分析関数

SQLパズル

IDListテーブル
ID  col
--  ---
 1    2
 1    5
 2    1
 2    7
 3    3
 3    4
 4    1

IDごとのcolの最小値の昇順、IDの昇順、Colの昇順
に出力する。

出力結果
ID  col
--  ---
 2    1
 2    7
 4    1
 1    2
 1    5
 3    3
 3    4


データ作成スクリプト

create table IDList(
ID  number(1),
col number(1));

insert into IDList values(1,2);
insert into IDList values(1,5);
insert into IDList values(2,1);
insert into IDList values(2,7);
insert into IDList values(3,3);
insert into IDList values(3,4);
insert into IDList values(4,1);
commit;


SQL

--■■■分析関数を使う方法■■■
select ID,col
  from IDList
order by min(col) over(partition by ID),ID,col;

--■■■相関サブクエリを使う方法■■■
select ID,col
  from IDList a
order by
(select min(b.col)
   from IDList b
  where b.ID = a.ID),ID,col;


解説

order by句で、分析関数を使うことができます。