Maison > base de données > tutoriel mysql > Comment effectuer un classement groupé dans MySQL ?

Comment effectuer un classement groupé dans MySQL ?

Linda Hamilton
Libérer: 2025-01-17 19:41:14
original
354 Les gens l'ont consulté

How to Perform Grouped Ranking in MySQL?

Explication détaillée du classement du groupe MySQL

Les administrateurs de bases de données doivent souvent trier et classer les données groupées. Par exemple, un tableau des performances des élèves, contenant des informations sur la classe et les élèves ainsi que les notes, doit être regroupé par classe et classer les performances des élèves dans chaque classe.

MySQL peut obtenir un classement de groupe grâce aux méthodes suivantes :

<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>
Copier après la connexion

Cette requête fonctionne comme ceci :

  1. Initialisation des variables : utilisez la sous-requête (SELECT @student:= -1, @class := -1) AS init_vars pour initialiser les variables définies par l'utilisateur @student et @class à -1.

  2. Itération groupée : la requête sélectionne les données d'une table temporaire t qui a été triée par id_class et grade par ordre décroissant.

  3. Calcul du classement : L'instruction CASE calcule le rang (rn) de chaque élève en fonction du id_class actuel et du @class précédent stocké dans id_class. Si id_class change, @student est réinitialisé à 0 sinon, @student est incrémenté.

  4. Mettre à jour la variable de classe  : @class est mis à jour à la valeur actuelle de id_class pour la prochaine itération.

Les résultats de la requête seront une liste des élèves de chaque classe, triés par leurs notes par ordre décroissant et triés par leur rang dans la classe. Cette méthode effectue efficacement un classement groupé, vous permettant de récupérer facilement des données triées et classées dans des scénarios complexes impliquant des données groupées. Notez que la base de tri ici est grade ordre décroissant, et le champ et l'ordre de tri peuvent être ajustés en fonction des besoins réels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal