トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-6 分析関数の引数に演算結果
SQLパズル
IDテーブル
ID Value
---- -----
1001 aaaa
1002 bbbb
1003 cccc
2001 dddd
2002 eeee
IDテーブルの、
IDの先頭2桁別に、IDの末尾2桁が最大のレコードを出力する。
出力結果
ID Value
---- -----
1003 cccc
2002 eeee
データ作成スクリプト
create table IDテーブル(
ID char(4),
Value char(4));
insert into IDテーブル values('1001','aaaa');
insert into IDテーブル values('1002','bbbb');
insert into IDテーブル values('1003','cccc');
insert into IDテーブル values('2001','dddd');
insert into IDテーブル values('2002','eeee');
commit;
SQL
--■■■分析関数を使う方法■■■
select ID,Value
from (select ID,Value,
max(substr(ID,3)) over(partition by substr(ID,1,2)) as MaxID
from IDテーブル)
where substr(ID,3)=MaxID;
--■■■相関サブクエリを使う方法■■■
select ID,Value from IDテーブル a
where substr(ID,3)=(select max(substr(b.ID,3)) from IDテーブル b
where substr(b.ID,1,2) = substr(a.ID,1,2));
解説
分析関数の引数に、演算結果を使うことができます。