PostgreSQLスキルアップノート(自己啓発のための個人サイト)
ウィンドウ関数・row_number
【一覧に戻る】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ ウィンドウ関数・row_number
■■■■
■■■■
■■■■ 2013/02/10
■■■■ 使用環境:PostgreSQL9.1.7 (CentOS6.2)
(C) 2013 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★自己都合によりマニュアルへのリンクは9.2としています。ご了承下さい。
★このページはそのままカット&ペーストで実行して試すことができます。
【マニュアル】
第 3章高度な諸機能・ウィンドウ関数→●[マニュアル]
第 4章SQLの構文・ウィンドウ関数呼び出し→●[マニュアル]
第 9章関数と演算子・ウィンドウ関数→●[マニュアル]
SELECT→●[マニュアル]
【参考記事】
−
【ポイント】
出力に番号を付与する方法です。
■1■ row_number基本
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1.基本
───────────────────────────────
select row_number() over(),c1,c2
from test_ctid;
row_number | c1 | c2
------------+----+-------
1 | 1 | aaaaa
2 | 4 | ddddd
3 | 2 | 22222
4 | 3 | 33333
5 | 5 | eeeee
2.並び替えを指定する場合の方法
───────────────────────────────
並び替えを指定すると、番号が順番にならない
これでは並ばない
select row_number() over(),c1,c2
from test_ctid
order by c1;
row_number | c1 | c2
------------+----+-------
1 | 1 | aaaaa
3 | 2 | 22222
4 | 3 | 33333
2 | 4 | ddddd
5 | 5 | eeeee
以下のようにするとrow_numberが順番どおりとなる
select row_number() over(order by c1),c1,c2
from test_ctid
order by c1;
row_number | c1 | c2
------------+----+-------
1 | 1 | aaaaa
2 | 2 | 22222
3 | 3 | 33333
4 | 4 | ddddd
5 | 5 | eeeee
3.その他
───────────────────────────────
select row_number() over(),c1,c2
from test_ctid
where c1>3;
row_number | c1 | c2
------------+----+-------
1 | 4 | ddddd
2 | 5 | eeeee
以上