Maison  >  Article  >  base de données  >  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
PHPzavant
2023-05-26 19:55:291549parcourir

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

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

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer