Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Kedudukan Data dalam Kumpulan dalam MySQL?

Bagaimana untuk Kedudukan Data dalam Kumpulan dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2025-01-17 19:51:10
asal
208 orang telah melayarinya

How to Rank Data Within Groups in MySQL?

Penjelasan terperinci kedudukan kumpulan MySQL

Dalam sesetengah senario, data perlu disusun berdasarkan kumpulan dan bukannya bergantung pada satu medan sahaja. Sebagai contoh, katakan terdapat jadual pelajar yang mengandungi ID pelajar, ID kelas dan gred seperti berikut:

ID_STUDENT ID_CLASS GRADE
1 1 90
1 2 80
2 1 99
3 1 80
4 1 70
5 2 78
6 2 90
6 3 50
7 3 90

Untuk meletakkan kedudukan pelajar dalam setiap kelas berdasarkan gred mereka, pertanyaan MySQL berikut boleh digunakan:

SELECT id_student, id_class, grade,
   @student:=CASE WHEN @class = id_class THEN @student+1 ELSE 1 END AS rn,
   @class:=id_class AS clset
FROM
  (SELECT @student:= 0) s,
  (SELECT @class:= 0) c,
  (SELECT *
   FROM mytable
   ORDER BY id_class, grade DESC, id_student
  ) t
Salin selepas log masuk

Pertanyaan ini mengandungi langkah-langkah berikut:

  1. Permulaan pembolehubah: Dua pembolehubah pengguna @student dan @class dimulakan kepada 0.

  2. Pemprosesan baris demi baris: Pertanyaan luar memproses setiap baris hasil yang ditetapkan dalam susunan yang ditentukan oleh klausa ORDER BY (id_class, grade DESC, id_student). Ambil perhatian bahawa grade DESC digunakan dalam menyusun di sini untuk memastikan pelajar yang mempunyai markah tinggi berada di kedudukan pertama.

  3. Kedudukan dalam kumpulan: Penyata CASE menyemak sama ada id_class semasa adalah sama dengan id_class sebelumnya (@class). Jika ia adalah sama, tambahkan 1 pada @student; jika tidak, tetapkan semula @student kepada 1. Ini memastikan bahawa nilai rn (kedudukan) adalah unik dalam setiap kumpulan (id_class).

  4. Tugasan berkumpulan: @class diberikan id_class semasa dan akan dibandingkan pada baris seterusnya.

Keluaran pertanyaan ini akan memberikan kedudukan kumpulan pelajar yang diingini:

ID_STUDENT ID_CLASS GRADE RANK
2 1 99 1
1 1 90 2
3 1 80 3
4 1 70 4
6 2 90 1
1 2 80 2
5 2 78 3
7 3 90 1
6 3 50 2

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

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan