Heim  >  Artikel  >  Datenbank  >  So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

PHPz
PHPznach vorne
2023-05-26 19:55:291549Durchsuche

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Wenn Sie auf die obige Frage die diesmal verwendete Funktion nicht verwenden, lautet die Antwort wie folgt. Mit anderen Worten: Wenn Ihr MySQL die Funktion in diesem Artikel nicht verwenden kann, können Sie sie durch die folgende Syntaxlogik ersetzen Es.

SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS `Rank` 
FROM Scores t1 ORDER BY t1.Score DESC

rank() over (Geschäftslogik)

Funktion: Ranking nach Ermittlung der angegebenen Bedingungen. Wenn die Bedingungen gleich sind, sind die Rankings gleich und die Rankings sind diskontinuierlich.

Diese Funktion kann für die Rangfolge der Schüler verwendet werden, wobei zwei Schüler mit den gleichen Noten gleichgesetzt werden und der nächste Schüler seinen ihm zustehenden Platz räumt. Das heißt: 1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

dense_rank() over (Geschäftslogik)

Funktion: Rangfolge nach Ermittlung der angegebenen Bedingungen. Wenn die Bedingungen gleich sind, wird die Rangfolge ermittelt gleich, und die Rangfolge wird diskontinuierlich sein.

Erläuterung: Es hat den gleichen Effekt wie rank() over. Der Unterschied besteht darin, dass die rank() over-Rangfolge dicht und kontinuierlich ist. Verwenden Sie diese Funktion, um das Ranking eines Schülers zu ermitteln. Im Falle eines Gleichstands werden zwei Studierende in der gleichen Rangliste gleichgestellt und der nächstplatzierte Student wird anhand der nächstplatzierten Rangliste ermittelt. Das heißt: 1 1 2 3 4 5 5 6

SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

row_number() über (Geschäftslogik)

Funktion: Rangfolge nach dem Ermitteln der angegebenen Bedingungen. Die Rangfolge ist unterschiedlich, wenn die Bedingungen gleich sind. und die Rangliste ist diskontinuierlich.

Auch wenn die abgefragten Werte gleich sind, sortiert diese Funktion sie fortlaufend, ohne zu berücksichtigen, ob sie parallel sind. Das heißt: 1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Postscript

Die Geschäftslogik in der Funktion kann komplex sein und ist nicht auf ORDER BY beschränkt.

### 分班级排名
SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank' 
FROM student

So verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL

Das obige ist der detaillierte Inhalt vonSo verwenden Sie rank() over, dense_rank() over und row_number() over in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen