Rank関数でデータに順番をつける
Rank関数の使い方は基本的に以下の通りです。
rank() over(order by カラム名)
昇順の場合はカラム名の後ろに何もつけなくて大丈夫ですが、降順で順番を付けたいときはカラム名の後に「desc」と付けます。
具体的なコード例
前提として以下のようなusersテーブルがあるとします。
id | name | like | age | address | phone_number | created_at | updated_at |
1 | 田中由美子 | tennis | 20 | 東京 | 010-2222-3333 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
2 | 鈴木浩 | game | 34 | 千葉 | 0120-222-4444 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
3 | 佐藤康明 | baseball | 19 | 神奈川 | 011-3344-2222 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
4 | 高橋洋子 | walking | 40 | 東京 | 010-223-4444 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
5 | 田島翔太 | swimming | 16 | 東京 | 0120-20-9999 | 2021-10-09 05:11:05 | 2021-10-09 05:11:05 |
各データのageカラムに対して昇順で順番をつけてデータを取得します。
select name, rank() orver(order by age) from users;
実行結果は以下の通りです。
name | age | rank |
田島翔太 | 16 | 1 |
佐藤康明 | 19 | 2 |
田中由美子 | 20 | 3 |
鈴木浩 | 34 | 4 |
高橋洋子 | 40 | 5 |