Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melakukan Kedudukan Berkumpulan Prestasi Pelajar dalam MySQL?
Kedudukan kumpulan dalam MySQL
Andaikan anda mempunyai jadual dengan data prestasi pelajar, termasuk ID pelajar, ID kelas dan gred pelajar dalam setiap kelas boleh memberikan cerapan tentang sejauh mana mereka belajar. Ini boleh dicapai dengan menggunakan gabungan pembolehubah, subkueri, dan pengendali perbandingan.
Pertanyaan berikut menggunakan pembolehubah @pelajar dan @kelas:
<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) s, (SELECT @class:= -1) c, (SELECT * FROM mytable ORDER BY id_class, grade DESC, id_student ) t</code>
Proses pertanyaan:
Isih data: Subkueri paling dalam (SELECT * FROM mytable ORDER BY id_class, grade DESC, id_student)
Isih mengikut ID kelas dahulu, kemudian mengikut gred dalam tertib menurun, dan akhirnya mengikut ID pelajar. Ini memastikan pelajar yang mempunyai gred yang lebih tinggi dalam kelas yang sama mendapat kedudukan yang lebih tinggi.
Permulaan pembolehubah: Gunakan subkueri untuk memulakan pembolehubah @pelajar dan @kelas kepada -1.
Kedudukan Tugasan: Penyataan SELECT
dalam pernyataan CASE
menyemak sama ada ID kelas semasa adalah sama dengan ID kelas sebelumnya. Jika ia adalah sama, @student ditambah dengan 1 jika tidak, @student ditetapkan semula kepada 0. Ini menetapkan kedudukan dalam setiap kelas.
Kemas kini @class: Pembolehubah @class diberikan ID kelas semasa. Ia digunakan dalam baris berikutnya dalam CASE
pernyataan untuk menentukan sama ada pelajar tergolong dalam kelas yang sama.
Dengan menggunakan pembolehubah dan subkueri, pertanyaan ini mengumpulkan pelajar secara berkesan ke dalam kelas masing-masing dan menetapkan kedudukan sewajarnya, menyediakan cara yang bermakna untuk mentafsir pembelajaran pelajar dalam setiap kumpulan. Harap maklum bahawa pertanyaan ini disusun mengikut tertib gred menurun, dengan pelajar yang mempunyai gred yang lebih tinggi mendapat kedudukan lebih tinggi. Jika anda perlu mengisih mengikut tertib menaik, sila tukar ORDER BY id_class, grade DESC, id_student
kepada ORDER BY id_class, grade ASC, id_student
.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Kedudukan Berkumpulan Prestasi Pelajar dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!