Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menambahkan Posisi Peringkat ke Baris dengan DENSE_RANK() di SQL

Masalah:

Anda ingin menambahkan posisi peringkat ke baris secara berurutan, meskipun baris memiliki nilai yang sama.

Contoh:

Basis data kami memiliki tabel bernama competition dengan data pada kolom berikut:id (kunci utama), first_name , last_name , dan score .

id nama_depan nama_belakang skor
11 John Thomas 345
14 Maria Johnson 222
16 Lisa Coklat 154
23 Alan Blake 222
32 Kris Taylor 154

Mari tampilkan semua detail tentang siswa:nama belakang, nama depan, dan skor mereka diurutkan berdasarkan score dalam urutan menurun. Kami tidak ingin melewatkan nomor posisi jika beberapa skor sama untuk lebih dari satu siswa.

Solusi 1:

SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank,
  first_name,
  last_name,
  score
FROM competition;

Perhatikan bahwa peringkat berkisar dari 1 hingga 3.

Diskusi:

Gunakan DENSE_RANK jika Anda tidak ingin melewatkan posisi peringkat demi baris dengan peringkat yang sama. Dalam contoh kita, meskipun Mary dan Alan memiliki peringkat 2 yang sama, posisi Lisa adalah 3.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menghubungkan SalesForce sebagai sumber data di Pyramid

  2. Tutorial JOIN SQL dengan Contoh

  3. Cara Mengelompokkan dengan Dua Kolom di SQL

  4. Dasar-dasar Ekspresi Tabel, Bagian 13 – Fungsi Bernilai Tabel Sebaris, Lanjutan

  5. Melampirkan ContentDocument ke Objek Kustom Salesforce