Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie finde ich den n-ten Rang in MySQL?

Oftmals müssen Sie den n-ten Rang in MySQL finden. Finden Sie z. B. den 3. Rang in einer Klasse von Schülern. Schüler nach Punktzahl geordnet. Um den n-ten Rang in MySQL zu finden, ordnen wir zuerst die Datensätze. Dann filtern wir den n-ten Rang in MySQL. Hier ist eine Abfrage, die Sie verwenden können. Ersetzen Sie einfach den Tabellennamen Ergebnisse und Spaltennamen id, score.

Finden Sie den n-ten Rang in MySQL basierend auf dem steigenden Wert

Beispiel:

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

Hier finden wir den Rekord mit Rang 3 . Die folgende Abfrage ordnet die Datensätze basierend auf steigender Punktzahl. Dann filtert es den Datensatz mit 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;

Die

(SELECT @curRank := 0)

part erlaubt die Variableninitialisierung, ohne dass ein separater SET-Befehl erforderlich ist.

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

Finde den n-ten Rang in MySQL basierend auf dem abnehmenden Wert

Wenn Sie den n-ten Rang in MySQL basierend auf der absteigenden Reihenfolge der Punktzahlen finden möchten, fügen Sie einfach das Schlüsselwort DESC in die Abfrage ein. Hier finden wir den Rekord mit 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;

Ergebnis:

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

Sie können die oben genannten Methoden anwenden, um den n-ten Rang für jede Art von Metrik wie Gehalt, Mitarbeiterzahl usw. zu erhalten.