【PostgreSQL】row_number関数で重複なしで順位づけをする方法

ROW_NUMBER関数の使い方

row_number関数の使い方は基本的には以下のとおりです。

row_number() orver(order by カラム名)

カラム名の後ろに何もつけないと昇順になります。

降順で順位付けをしたい場合はカラム名の後ろに「desc」と付ければOKです。

具体的なコード

まず前提として以下のusersテーブルがあるとします。

idnamelikeageaddresscreated_atupdated_at
1田中由美子tennis20東京2021-10-09 05:11:052021-10-09 05:11:05
2鈴木浩game34千葉2021-10-09 05:11:052021-10-09 05:11:05
3佐藤康明baseball19神奈川2021-10-09 05:11:052021-10-09 05:11:05
4高橋洋子walking40東京2021-10-09 05:11:052021-10-09 05:11:05
5田島翔太swimming20東京2021-10-09 05:11:052021-10-09 05:11:05

ageカラムに対して降順で順番を付けてデータを取得したいと思います。

以下のコマンドを実行します。

select name, age, row_number() orver(order by age desc) from users

実行結果は以下の通りになります。

nameagerow_number
高橋洋子401
鈴木浩342
田島翔太203
田中由美子204
佐藤康明195

「田島翔太」と「田中由美子」のageカラムの値は同じく20ですが、row_number関数を使うと同じ順番は付かずユニークな順番が付与されます。

タイトルとURLをコピーしました