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

¿Cómo encontrar el rango nth en MySQL?

Muchas veces necesita encontrar el rango nth en MySQL. Por ejemplo, encontrar el tercer puesto en una clase de estudiantes. Estudiantes clasificados por puntuación. Para encontrar el rango n en MySQL, primero clasificaremos los registros. Luego filtramos el rango n en MySQL. Aquí hay una consulta que puede usar. Simplemente reemplace el nombre de la tabla puntuaciones y nombres de columna id, score.

Encuentra el rango n en MySQL según el 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 |
+----+------+

Aquí encontramos el registro con rango 3 . La siguiente consulta clasifica los registros en función de la puntuación creciente. Luego filtra el registro con rango 3:

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

El

(SELECT @curRank := 0)

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

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

Encuentra el rango n en MySQL basado en el valor decreciente

Si desea encontrar el rango n en MySQL según el orden decreciente de puntajes, simplemente agregue la palabra clave DESC en la consulta. Aquí encontramos el registro con rango 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;

Resultado:

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

Puede aplicar los métodos anteriores para obtener el rango n para cualquier tipo de métrica, como salario, número de empleados, etc.