Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Kedudukan Berkumpulan dalam 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:
Permulaan pembolehubah: Gunakan subquery (SELECT @student:= -1, @class := -1) AS init_vars
untuk memulakan pembolehubah takrif pengguna @student
dan @class
kepada -1.
Lelaran Berkumpulan: Pertanyaan memilih data daripada jadual sementara t
yang telah diisih mengikut id_class
dan grade
dalam tertib menurun.
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.
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!