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




以上 
inserted by FC2 system