Masalah:
Anda ingin membuat peringkat rekor dengan melewatkan posisi peringkat setelah baris yang memiliki peringkat yang sama.
Contoh:
Basis data kami memiliki tabel bernama championship dengan data pada kolom berikut:id (kunci utama), user_name , dan score .
| id | nama_pengguna | skor |
| 111 | John | 12 |
| 112 | Maria | 23 |
| 115 | Lisa | 45 |
| 120 | Alan | 23 |
| 221 | Kris | 23 |
Mari kita tampilkan semua nama pengguna dan skor mereka diurutkan dalam urutan menurun dan diberi peringkat berdasarkan skor.
Solusi 1:
SELECT RANK() OVER(ORDER BY score DESC) AS rank_place, user_name, score FROM championship;
Kueri ini mengembalikan peringkat berikut:
| rank_place | nama_pengguna | skor |
| 1 | Lisa | 45 |
| 2 | Maria | 23 |
| 2 | Alan | 23 |
| 2 | Kris | 23 |
| 5 | John | 12 |
Perhatikan bahwa nomor peringkat adalah dari 1 hingga 5, diurutkan berdasarkan skor dalam urutan menurun.
Diskusi:
Gunakan RANK jika Anda ingin melewati posisi peringkat setelah baris dengan peringkat yang sama. Dalam contoh kita, Mary, Alan, dan Chris semuanya memiliki peringkat yang sama 2. Posisi yang memenuhi syarat berikutnya adalah 5 (dihitung dari 2 + 3 baris dengan peringkat yang sama).