Maison > Article > base de données > Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL
Pour la question ci-dessus, si vous n'utilisez pas la fonction utilisée cette fois, la réponse est la suivante. En d'autres termes, si votre MySQL ne peut pas utiliser la fonction de cet article, vous pouvez utiliser la logique de syntaxe suivante pour la remplacer. il.
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
Fonction : Classement après avoir découvert les conditions spécifiées Si les conditions sont les mêmes, les classements seront les mêmes et les classements seront discontinus.
Cette fonction peut être utilisée pour le classement des étudiants, où deux étudiants avec les mêmes notes seront à égalité et le prochain étudiant quittera son poste. C'est-à-dire : 1 1 3 4 5 5 7
SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student
Fonction : Classement après avoir découvert les conditions spécifiées Si les conditions sont les mêmes, le classement sera le. même chose, et le classement sera discontinu.
Explication : Cela a le même effet que Rank() over. La différence est que dense_rank() over Rank est dense et continu. Utilisez cette fonction pour déterminer le classement d'un élève. En cas d'égalité, deux étudiants seront à égalité pour le même classement, et l'étudiant classé suivant sera déterminé en fonction du classement suivant. Soit : 1 1 2 3 4 5 5 6
SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student
Fonction : Classement après avoir pris connaissance des conditions spécifiées, les classements sont différents si les conditions sont les mêmes, et les classements sont discontinus.
Même si les valeurs interrogées sont les mêmes, cette fonction les triera en continu sans se demander si elles sont parallèles. C'est-à-dire : 1 2 3 4 5 6
SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student
La logique métier de la fonction peut être complexe et ne se limite pas à ORDER BY PARTITION BY.
### 分班级排名 SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank' FROM student
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!