sql >> Base de Datos >  >> RDS >> Mysql

Cómo calcular el rango en MySQL

Muchas veces necesitas calcular el rango en MySQL. Puede ordenar por un número o texto, pero no puede calcular el rango en MySQL fácilmente. Aquí hay una consulta que puede usar. Simplemente reemplace el nombre de la tabla puntuaciones y nombres de columna id, score.

Calcular rango en MySQL basado en valor creciente

Ejemplo:

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 |
+----+------+

Usamos una variable de clasificación, como la siguiente:

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

El

(SELECT @curRank := 0)

parte permite la inicialización de variables sin necesidad de un comando SET por separado.

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)

Calcular rango en MySQL basado en valor decreciente

Si desea calcular el rango en MySQL según el orden decreciente de puntajes, simplemente agregue la palabra clave DESC en la consulta.

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

Resultado: