sql >> Database >  >> RDS >> Mysql

Hoe de n-de rang in MySQL te vinden?

Vaak moet je de n-de rang in MySQL vinden. Vind bijvoorbeeld de 3e rang in een klas met studenten. Studenten gerangschikt op score. Om de n-de rang in MySQL te vinden, zullen we eerst de records rangschikken. Vervolgens filteren we de n-de rang in MySQL. Hier is een query die u kunt gebruiken. Vervang gewoon de tabelnaam scores en kolomnamen id, score.

Vind de nde positie in MySQL op basis van toenemende waarde

Voorbeeld:

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 vinden we het record met rang 3 . De volgende query rangschikt de records op basis van toenemende score. Vervolgens filtert het het record met 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;

De

(SELECT @curRank := 0)

deel maakt de initialisatie van de variabele mogelijk zonder dat een apart SET-commando nodig is.

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

Vind de nde rang in MySQL op basis van afnemende waarde

Als u de n-de rang in MySQL wilt vinden op basis van afnemende volgorde van scores, voegt u gewoon het trefwoord DESC toe aan de zoekopdracht. Hier vinden we het record met 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;

Resultaat:

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

U kunt de bovenstaande methoden toepassen om de n-de rang te krijgen voor elke soort statistiek, zoals salaris, aantal werknemers, enz.

  1. SentryOne-gegevens verzenden naar de Azure SQL Database DTU-calculator

  2. Kalendertabel voor datawarehouse

  3. Het sterrenschema

  4. java.lang.IllegalArgumentException:kolom '_id' bestaat niet