Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намеря n-ти ранг в MySQL?

Много пъти трябва да намерите n-ти ранг в MySQL. Например намерете 3-ти ранг в клас ученици. Студентите, класирани по точки. За да намерим n-ти ранг в MySQL, първо ще класираме записите. След това филтрираме n-тия ранг в MySQL. Ето една заявка, която можете да използвате. Просто заменете името на таблицата резултати и имена на колони id, score.

Намерете n-ти ранг в MySQL въз основа на нарастваща стойност

Пример:

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

Тук намираме записа сранг 3 . Следната заявка класира записите въз основа на нарастващ резултат. След това филтрира записа с ранг 3:

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

(SELECT @curRank := 0)

част позволява инициализация на променливата, без да се изисква отделна команда SET.

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

Намерете n-ти ранг в MySQL въз основа на намаляваща стойност

Ако искате да намерите n-ти ранг в MySQL въз основа на низходящ ред на резултатите, просто добавете ключовата дума DESC в заявката. Тук намираме записа с ранг 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;

Резултат:

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

Можете да приложите горните методи, за да получите n-ти ранг за всякакъв вид метрика като заплата, брой служители и т.н.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL КЪДЕ В ()

  2. mysql изберете група сума по дата

  3. Експортиране на MySQL в изходящ файл:CSV екраниращи знаци

  4. как да изтриете дублиращи се редове от таблица в mysql

  5. mysqli_stmt::bind_result():Броят на променливите за свързване не съвпада с броя на полетата в подготвеното изявление