Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como encontrar a enésima classificação no MySQL?


Muitas vezes você precisa encontrar a enésima posição no MySQL. Por exemplo, encontre a 3ª posição em uma classe de alunos. Alunos classificados por pontuação. Para encontrar a enésima classificação no MySQL, primeiro vamos classificar os registros. Em seguida, filtramos a enésima classificação no MySQL. Aqui está uma consulta que você pode usar. Basta substituir o nome da tabela pontuações e nomes de coluna id, pontuação.

Encontre a enésima classificação no MySQL com base no valor crescente


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

Aqui encontramos o recorde com rank 3 . A consulta a seguir classifica os registros com base na pontuação crescente. Em seguida, filtra o registro com classificação 3:
SELECT * from (
SELECT    id,score,
          @curRank := @curRank + 1 AS rank
FROM      scores p, (SELECT @curRank := 0) r
ORDER BY  score)
WHERE rank = 3;

o
(SELECT @curRank := 0)

part permite a inicialização da variável sem exigir um comando SET separado.
Result:
+----+------+------+
| id | score| rank |
+----+------+------+
| 5  |   20 |    3 |
+----+------+------+
1 row in set (0.0 sec)

Encontre a enésima classificação no MySQL com base no valor decrescente


Se você quiser encontrar a n-ésima classificação no MySQL com base na ordem decrescente das pontuações, basta adicionar a palavra-chave DESC na consulta. Aqui encontramos o recorde com a classificação 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)


Você pode aplicar os métodos acima para obter a enésima classificação para qualquer tipo de métrica, como salário, contagem de funcionários etc.