Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer le classement dans MySQL

Plusieurs fois, vous devez calculer le rang dans MySQL. Vous pouvez commander par un nombre ou un texte, mais vous ne pouvez pas calculer facilement le classement dans MySQL. Voici une requête que vous pouvez utiliser. Remplacez simplement le nom de la table scores et les noms de colonne id, score.

Calculer le classement dans MySQL en fonction de la valeur croissante

Exemple :

CREATE TABLE score (id int, score int);
INSERT INTO scores VALUES (1, 35),(2, 10),(3,30),(4,22),(5,20),(6,18),(7,36);
Scores:
+----+------+
| id | score|
+----+------+
| 1  |   35 |
| 2  |   10 |
| 3  |   30 |
| 4  |   22 |
| 5  |   20 |
| 6  |   18 |
| 7  |   36 |
+----+------+

Nous utilisons une variable de classement, telle que la suivante :

SELECT    id,score,
          @curRank := @curRank + 1 AS rank
FROM      scores p, (SELECT @curRank := 0) r
ORDER BY  score;

Le

(SELECT @curRank := 0)

part permet l'initialisation de la variable sans nécessiter une commande SET séparée.

Result:
+----+------+------+
| id | score| rank |
+----+------+------+
| 2  |   10 |    1 |
| 6  |   18 |    2 |
| 5  |   20 |    3 |
| 4  |   22 |    4 |
| 3  |   30 |    5 |
| 1  |   35 |    6 |
| 7  |   36 |    7 |
+----+------+------+
7 rows in set (0.02 sec)

Calculer le classement dans MySQL en fonction de la valeur décroissante

Si vous souhaitez calculer le classement dans MySQL en fonction de l'ordre décroissant des scores, ajoutez simplement le mot-clé DESC dans la requête.

SELECT    id,score,
          @curRank := @curRank + 1 AS rank
FROM      scores p, (SELECT @curRank := 0) r
ORDER BY  score DESC;

Résultat: