Maison > base de données > tutoriel mysql > Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

PHPz
Libérer: 2023-05-26 19:55:29
avant
1616 Les gens l'ont consulté

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
Copier après la connexion

rank() over (logique métier)

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
Copier après la connexion

Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

dense_rank() over (logique métier)

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
Copier après la connexion

Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

row_number() over (logique métier)

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
Copier après la connexion

Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

Postscript

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
Copier après la connexion

Comment utiliser Rank() over, dense_rank() over et row_number() over dans MySQL

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal