Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Kedudukan Berkumpulan dalam MySQL?

Bagaimana untuk Melakukan Kedudukan Berkumpulan dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-17 19:41:14348semak imbas

How to Perform Grouped Ranking in MySQL?

Penjelasan terperinci kedudukan kumpulan MySQL

Pentadbir pangkalan data selalunya perlu mengisih dan menilai data terkumpul. Sebagai contoh, jadual prestasi pelajar, yang mengandungi maklumat kelas dan pelajar serta gred, perlu dikumpulkan mengikut kelas dan kedudukan prestasi pelajar dalam setiap kelas.

MySQL boleh mencapai kedudukan kumpulan melalui kaedah berikut:

<code class="language-sql">SELECT id_student, id_class, grade,
   @student:=CASE WHEN @class = id_class THEN @student+1 ELSE 0 END AS rn,
   @class:=id_class AS clset
FROM
  (SELECT @student:= -1, @class := -1) AS init_vars,  -- 初始化变量
  (SELECT *
   FROM mytable
   ORDER BY id_class, grade DESC  -- 按班级和成绩降序排序
  ) AS t</code>

Pertanyaan ini berfungsi seperti ini:

  1. Permulaan pembolehubah: Gunakan subquery (SELECT @student:= -1, @class := -1) AS init_vars untuk memulakan pembolehubah takrif pengguna @student dan @class kepada -1.

  2. Lelaran Berkumpulan: Pertanyaan memilih data daripada jadual sementara t yang telah diisih mengikut id_class dan grade dalam tertib menurun.

  3. Pengiraan Kedudukan: Penyata CASE mengira pangkat (rn) setiap pelajar berdasarkan id_class semasa dan @class sebelumnya yang disimpan dalam id_class. Jika id_class berubah, @student ditetapkan semula kepada 0 jika tidak, @student dinaikkan.

  4. Kemas kini pembolehubah kelas : @class dikemas kini kepada nilai semasa id_class untuk lelaran seterusnya.

Hasil pertanyaan ialah senarai pelajar dalam setiap kelas, diisih mengikut gred mereka dalam tertib menurun dan diisih mengikut pangkat mereka dalam kelas. Kaedah ini cekap melaksanakan kedudukan terkumpul, membolehkan anda mendapatkan semula data yang diisih dan ditarafkan dengan mudah dalam senario kompleks yang melibatkan data terkumpul. Ambil perhatian bahawa asas pengisihan di sini ialah grade tertib menurun, dan medan pengisihan serta tertib boleh dilaraskan mengikut keperluan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Kedudukan Berkumpulan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn