Mysql
 sql >> Database >  >> RDS >> Mysql

Come trovare l'ennesima posizione in MySQL?

Molte volte è necessario trovare l'ennesima posizione in MySQL. Ad esempio, trova il 3° posto in una classe di studenti. Studenti classificati per punteggio. Per trovare l'ennesima posizione in MySQL, per prima cosa classificheremo i record. Quindi filtriamo l'ennesimo rango in MySQL. Ecco una query che puoi utilizzare. Basta sostituire il nome della tabella punteggi e nomi di colonna id, punteggio.

Trova l'ennesima posizione in MySQL in base al valore crescente

Esempio:

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

Qui troviamo il record con rank 3 . La query seguente classifica i record in base al punteggio crescente. Quindi filtra il record con il 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;

Il

(SELECT @curRank := 0)

parte consente l'inizializzazione della variabile senza richiedere un comando SET separato.

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

Trova l'ennesima posizione in MySQL in base al valore decrescente

Se vuoi trovare l'ennesima posizione in MySQL in base all'ordine decrescente dei punteggi, aggiungi semplicemente la parola chiave DESC nella query. Qui troviamo il record 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;

Risultato:

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

Puoi applicare i metodi di cui sopra per ottenere l'ennesima posizione per qualsiasi tipo di metrica come stipendio, conteggio dei dipendenti, ecc.