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

Cara Memberi Peringkat Baris Dalam Partisi di SQL

Masalah:

Di kumpulan hasil, Anda ingin mempartisi record dan memberi peringkat baris dalam setiap partisi, menambahkan kolom lain untuk menampilkan peringkat baris dalam partisi.

Contoh:

Basis data kami memiliki tabel bernama majalah dengan data di kolom berikut:id (kunci utama), name , category , dan price .

id nama kategori harga
105 Hidup Pedesaan gaya hidup 1,70
108 Majalah Berita berita 3,35
115 Desibel musik 6,50
123 Majalah Drum musik 6,50
145 Matahari terbenam gaya hidup 12.00
155 Dunia gaya hidup 9,50
158 Keyboard musik 8.45

Ayo kelompokkan majalah menurut kategori dan urutkan setiap grup dalam urutan menurun berdasarkan harga . Menampilkan posisi peringkat, nama, kategori, dan harga untuk setiap majalah.

Solusi:

SELECT  
  category,
  name,
  price,
  RANK() OVER (PARTITION BY category
                    ORDER BY price DESC
                    ) AS price_rank
FROM magazine;

Ini hasilnya:

kategori nama harga peringkat_harga
gaya hidup Matahari terbenam 12.00 1
gaya hidup Dunia 9,50 2
gaya hidup Hidup Pedesaan 1,70 3
musik Keyboard 8.45 1
musik Desibel 6,50 2
musik Majalah Drum 6,50 2
berita Majalah Berita 3,35 1

Diskusi:

Untuk mempartisi baris dan memberi peringkat berdasarkan posisinya di dalam partisi, gunakan fungsi RANK() dengan klausa PARTITION BY.

Fungsi RANK() SQL memungkinkan kita untuk menambahkan posisi record di dalam kumpulan hasil atau di dalam setiap partisi. Dalam contoh kami, kami memberi peringkat baris dalam sebuah partisi.

Klausa OVER() selalu muncul setelah RANK(). OVER() harus berisi klausa ORDER BY. Jika Anda mengembalikan peringkat dalam sebuah partisi, tempatkan klausa PARTITION BY di dalam klausa OVER(). PARTITION BY diikuti oleh ekspresi atau nama kolom; dalam contoh kita, kita menggunakan kolom category (PARTITION BY category ).

Catatan: Jika Anda tidak menggunakan partisi, Anda dapat menghilangkan PARTITION BY dan cukup memasukkan klausa ORDER BY di OVER().

Setelah PARTITION BY, letakkan ORDER BY diikuti dengan nama kolom atau ekspresi pengurutan. Dalam contoh kami, kami mengurutkan dalam urutan menurun menurut kolom price (ORDER BY price DESC ). Kata kunci DESC menunjukkan urutan pengurutan menurun.

Dalam contoh di atas, menggunakan RANK() dengan PARTITION BY membagi hasil yang disetel ke dalam grup majalah yang terpisah menurut kategori mereka . Dengan setiap grup, baris diurutkan berdasarkan harga dan kemudian diberi peringkat dalam grup itu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sistem informasi, data dan informasi

  2. Memahami Jenis dan Format MapReduce

  3. Bagaimana Rencana Paralel Memulai – Bagian 3

  4. SQL SELECT DISTINCT:Praktik Terbaik Kinerja

  5. Modifikasi Data di bawah Isolasi Snapshot Berkomitmen Baca