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

Comment trouver le nième rang dans MySQL?

Plusieurs fois, vous devez trouver le nième rang dans MySQL. Par exemple, trouver le 3e rang dans une classe d'étudiants. Les élèves classés par score. Pour trouver le nième rang dans MySQL, nous allons d'abord classer les enregistrements. Ensuite, nous filtrons le nième rang 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.

Trouvez le nième rang 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 |
+----+------+

On retrouve ici le record avec le rang 3 . La requête suivante classe les enregistrements en fonction du score croissant. Puis il filtre l'enregistrement avec le rang 3 :

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

Le

(SELECT @curRank := 0)

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

Result:
+----+------+------+
| id | score| rank |
+----+------+------+
| 5  |   20 |    3 |
+----+------+------+
1 row in set (0.0 sec)

Trouvez le nième rang dans MySQL en fonction de la valeur décroissante

Si vous souhaitez trouver le nième rang dans MySQL en fonction de l'ordre décroissant des scores, ajoutez simplement le mot-clé DESC dans la requête. On retrouve ici le record avec le rang 3.

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

Résultat :

+----+------+------+
| id | score| rank |
+----+------+------+
| 3  |   30 |    3 |
+----+------+------+
1 row in set (0.0 sec)

Vous pouvez appliquer les méthodes ci-dessus pour obtenir le nième rang pour tout type de métrique comme le salaire, le nombre d'employés, etc.