Heim >Datenbank >MySQL-Tutorial >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
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
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
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
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
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!