Heim > Datenbank > MySQL-Tutorial > Wie führt man ein gruppiertes Ranking der Schülerleistungen in MySQL durch?

Wie führt man ein gruppiertes Ranking der Schülerleistungen in MySQL durch?

DDD
Freigeben: 2025-01-17 19:37:13
Original
284 Leute haben es durchsucht

How to Perform Grouped Ranking of Student Performance in MySQL?

Gruppenranking in MySQL

Angenommen, Sie haben eine Tabelle mit Schülerleistungsdaten, einschließlich Schüler-ID, Klassen-ID und Note. Die Rangfolge der Schüler in jeder Klasse kann Aufschluss darüber geben, wie gut sie lernen. Dies kann durch die Verwendung einer Kombination aus Variablen, Unterabfragen und Vergleichsoperatoren erreicht werden.

Die folgende Abfrage verwendet die Variablen @student und @class:

<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>
Nach dem Login kopieren

Anfrageablauf:

  1. Datensortierung: Innerste Unterabfrage (SELECT * FROM mytable ORDER BY id_class, grade DESC, id_student) Zuerst nach Klassen-ID, dann in absteigender Reihenfolge nach Note und schließlich nach Studenten-ID sortieren. Dadurch wird sichergestellt, dass Schüler mit besseren Noten innerhalb derselben Klasse höher eingestuft werden.

  2. Variableninitialisierung: Verwenden Sie Unterabfragen, um die Variablen @student und @class auf -1 zu initialisieren.

  3. Zuweisungsrang: Die SELECT-Anweisung in der CASE-Anweisung prüft, ob die aktuelle Klassen-ID mit der vorherigen Klassen-ID übereinstimmt. Wenn sie gleich sind, wird @student um 1 erhöht; andernfalls wird @student auf 0 zurückgesetzt. Dadurch werden Ranglisten innerhalb jeder Klasse erstellt.

  4. @class aktualisieren: Der @class-Variablen wird die aktuelle Klassen-ID zugewiesen. Es wird in nachfolgenden Zeilen in CASE-Anweisungen verwendet, um festzustellen, ob Schüler derselben Klasse angehören.

Durch die Verwendung von Variablen und Unterabfragen gruppiert diese Abfrage Schüler effektiv in ihre jeweiligen Klassen und weist ihnen entsprechende Rangfolgen zu, was eine sinnvolle Möglichkeit bietet, den Lernerfolg der Schüler innerhalb jeder Gruppe zu interpretieren. Beachten Sie, dass diese Abfrage in absteigender Reihenfolge der Noten sortiert wird, wobei Schüler mit besseren Noten höher eingestuft werden. Wenn Sie in aufsteigender Reihenfolge sortieren müssen, ändern Sie bitte ORDER BY id_class, grade DESC, id_student in ORDER BY id_class, grade ASC, id_student.

Das obige ist der detaillierte Inhalt vonWie führt man ein gruppiertes Ranking der Schülerleistungen in MySQL durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage