- Kaedah selalu berfungsi dengan klausa Over ().
- Dalam urutan kronologi, mereka memperuntukkan setiap baris satu peringkat.
- Bergantung pada ORDER BY, fungsi memperuntukkan peringkat untuk setiap baris.
- Baris selalu mempunyai peringkat yang diperuntukkan kepada mereka, bermula dengan satu untuk setiap partisi baru.
Secara keseluruhan, ada tiga jenis fungsi peringkat, seperti berikut:
- Pangkat
- Kedudukan Padat
- Peringkat Peratus
PERINGKAT MySQL ():
Ini adalah kaedah yang memberikan peringkat dalam partisi atau array hasil dengan jurang setiap baris. Secara kronologi, kedudukan baris tidak diperuntukkan sepanjang masa (i.e., meningkat satu dari baris sebelumnya). Walaupun anda mempunyai nilai antara beberapa nilai, pada ketika itu, utiliti rank () menggunakan ranking yang sama dengannya. Juga, kedudukan sebelumnya ditambah angka nombor berulang mungkin nombor pangkat berikutnya.
Untuk memahami peringkat, buka shell klien baris perintah dan ketik kata laluan MySQL anda untuk mula menggunakannya.
Anggaplah kita memiliki tabel di bawah bernama "sama" dalam "data" pangkalan data, dengan beberapa catatan.
>> PILIH * DARI data.sama;
Contoh 01: PERINGKAT Ringkas ()
Di bawah ini, kami telah menggunakan fungsi Rank dalam perintah SELECT. Pertanyaan ini memilih lajur "id" dari tabel "sama" sambil memeringkatnya sesuai dengan lajur "id". Seperti yang anda lihat, kami telah memberikan nama pada lajur peringkat, yang merupakan "my_rank". Peringkat sekarang akan disimpan di lajur ini, seperti yang ditunjukkan di bawah.
>> SELECT id, RANK () OVER (ORDER BY id) my_rank DARI fata.sama;
Contoh 02: RANK () Menggunakan BAHAGIAN
Andaikan jadual "pekerja" lain dalam pangkalan data "data" dengan rekod berikut. Mari kita mempunyai contoh lain yang membelah hasil yang ditetapkan menjadi segmen.
>> PILIH * DARI data.pekerja;
Untuk menggunakan kaedah RANK (), instruksi berikutnya memberikan peringkat ke setiap baris dan membagi hasil yang ditetapkan ke dalam partisi menggunakan "Umur" dan menyusunnya bergantung pada "Gaji". Pertanyaan ini telah mengambil semua rekod semasa berada di lajur "new_rank". Anda dapat melihat output pertanyaan ini di bawah. Ini telah menyusun jadual mengikut "Gaji" dan membaginya mengikut "Umur".
>> SELECT *, RANK () LEBIH (PARTISI MENGIKUT ASAL ORDER MENGIKUT Gaji) new_rank DARI data.pekerja;
MySQL DENSE_Rank ():
Ini adalah fungsi di mana, tanpa lubang, menentukan peringkat setiap baris dalam bahagian atau set hasil. Kedudukan baris paling kerap diperuntukkan mengikut urutan. Kadang-kadang, anda mempunyai kaitan di antara nilai-nilai, dan oleh itu ia ditugaskan ke peringkat yang tepat oleh peringkat yang padat, dan peringkat berikutnya adalah nombor berikutnya.
Contoh 01: DENSE_RANK Mudah ()
Anggaplah kita memiliki tabel "pegawai", dan Anda harus memberi peringkat pada lajur meja, "Nama", dan "Gaji" sesuai dengan Kolom "Nama". Kami telah membuat lajur baru "dens_Rank" untuk menyimpan penilaian rekod di dalamnya. Setelah menjalankan pertanyaan di bawah, kami mendapat hasil berikut dengan peringkat yang berbeza untuk semua nilai.
>> PILIH Nama, Gaji, DENSE_RANK () OVER (ORDER BY Name) dens_rank DARI data.pekerja;
Contoh 02: DENSE_RANK () Menggunakan BAHAGIAN
Mari kita lihat contoh lain yang membelah hasil yang ditetapkan menjadi segmen. Menurut sintaks di bawah ini, set yang dihasilkan dipartisi oleh frasa PARTITION BY dikembalikan oleh pernyataan FROM, dan kaedah DENSE_RANK () kemudian dilumurkan ke setiap bahagian menggunakan lajur "Nama". Kemudian, untuk setiap segmen, frasa ORDER BY smear untuk menentukan keharusan baris menggunakan lajur "Umur".
>> PILIH Nama, Umur, Gaji, DENSE_RANK () LEBIH (PARTISI MENGIKUT Nama PESANAN MENGIKUT Umur) new_rank DARI data.pekerja;Setelah menjalankan pertanyaan di atas, anda dapat melihat bahawa kami mempunyai hasil yang sangat berbeza dibandingkan dengan kaedah Single dense_rank () dalam contoh di atas. Kami mendapat nilai berulang yang sama untuk setiap nilai baris, seperti yang anda lihat di bawah. Ini adalah ikatan nilai pangkat.
MySQL PERCENT_RANK ():
Ini sememangnya kaedah pemeringkatan peratusan (perbandingan peringkat) yang mengira baris dalam koleksi partisi atau hasil. Kaedah ini mengembalikan senarai dari skala nilai sifar hingga 1.
Contoh 01: PERCENT_RANK Sederhana ()
Dengan menggunakan jadual "pekerja", kita telah melihat contoh kaedah PERCENT_RANK () yang mudah. Kami mempunyai pertanyaan di bawah untuk ini. Lajur per_rank telah dihasilkan dengan kaedah PERCENT_Rank () untuk memberi peringkat hasil yang ditetapkan dalam bentuk peratusan. Kami telah mengambil data sesuai dengan urutan penyortiran lajur "Umur" dan kemudian kami telah menentukan nilai dari tabel ini. Hasil pertanyaan untuk contoh ini memberi kami peringkat peratusan untuk nilai-nilai seperti yang ditunjukkan dalam gambar di bawah.
>> SELECT *, PERCENT_RANK () OVER (ORDER BY Age) per_rank DARI data.pekerja;
Contoh 02: PERCENT_RANK () Menggunakan BAHAGIAN
Setelah melakukan contoh mudah PERCENT_RANK (), kini giliran klausa “PARTITION BY”. Kami telah menggunakan jadual "pekerja" yang sama. Mari kita lihat sekejap contoh lain yang membahagikan hasilnya menjadi beberapa bahagian. Diberikan dari sintaks di bawah, tembok tetapan yang dihasilkan oleh ungkapan PARTITION BY diganti dengan deklarasi FROM, dan juga kaedah PERCENT_RANK () kemudian digunakan untuk memberi peringkat setiap susunan baris dengan lajur "Nama". Dalam gambar yang dipaparkan di bawah, anda dapat melihat set hasilnya hanya mengandungi 0 dan 1 nilai.
>> SELECT *, PERCENT_RANK () LEBIH (BAHAGIAN MENGIKUT Gaji PESANAN MENGIKUT Nama) per_rank DARI data.pekerja;
Kesimpulan:
Akhirnya, kami telah melakukan ketiga fungsi peringkat untuk baris yang digunakan dalam MySQL, melalui shell klien baris perintah MySQL. Juga, kami telah mengambil kira klausa sederhana dan PARTITION BY dalam kajian kami.