J'ai besoin de connaître le classement de mes clients. Ici, j'ajoute la requête SQL standard ANSI correspondante selon mes besoins. S'il vous plaît, aidez-moi à le convertir en MySQL.
SELECT RANK() OVER (PARTITION PAR Sexe ORDER BY Age) AS [Partition par sexe], Prénom, Âge, Genre DE Personne
Existe-t-il une fonction permettant d'interroger les classements dans MySQL ?
Il s'agit d'une solution générale qui attribue des niveaux denses sur les partitions aux lignes. Il utilise des variables utilisateur :
Veuillez noter que l'affectation des variables se trouve en
CASE表达式内。这(理论上)解决了评估顺序问题。添加IS NOT NULLpour gérer les problèmes de conversion de type de données et de court-circuit.PS : cela peut être facilement converti en numéros de ligne sur la partition en supprimant toutes les conditions qui vérifient les liens.
démo db fiddle
Une option consiste à utiliser une variable de classement comme celle-ci :
(SELECT @curRank := 0)部分允许变量初始化,而无需单独的SETCommandement.Cas de test :
Résultat :