トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
5-59 データ件数と、上位N件を出力
SQLパズル
CutTable
Val
---
100
95
80
60
40
30
20
10
CutTableのデータ件数を列に表示し、
Valの降順に5レコード出力する。
プライマリキーは、Valとする。
出力結果
Val Records
--- -------
100 8
95 8
80 8
60 8
40 8
データ作成スクリプト
create table CutTable(
Val number(3) primary key);
insert into CutTable
select 100 from dual
union select 95 from dual
union select 80 from dual
union select 60 from dual
union select 40 from dual
union select 30 from dual
union select 20 from dual
union select 10 from dual;
commit;
SQL
--■■■Row_Number関数を使う方法■■■
select Val,Records
from (select Val,
Row_Number() over(order by Val desc) as Rank,
count(*) over() as Records
from CutTable)
where Rank <= 5;
--■■■インラインビューでorder byを使う方法■■■
select Val,Records
from (select Val,
count(*) over() as Records
from CutTable
order by Val desc)
where RowNum <= 5;
解説
count関数で、レコード数を求めてます。