0
votes

MySQL classant une colonne avec des liens

Compte tenu d'une table de scores avec le schéma suivant

Line 3: SyntaxError: near 'SET @rank_count = 0;
SELECT Id, Score, CASE
    WHEN @prev_value := Score THEN @'


2 commentaires

Rank n'est pas un bon nom pour une colonne car, puisque mysql 8.0 c'est un Word réservé .


Affectation, " quand @prev_value: = Score, puis ", VS Comparaison, " quand @prev_value = score alors ". J'irais cependant avec l'une des suggestions des réponses.


3 Réponses :


0
votes

dans mysql 8.x, vous pouvez utiliser la fonction dense_rank () , comme dans: xxx


0 commentaires

0
votes

Vous pouvez compter tous les scores distincts supérieurs à ceux de chaque ligne et ajouter 1 au résultat: xxx

Voir le Demo


0 commentaires

0
votes

Vous pouvez utiliser des variables. Je pense que vous avez juste besoin d'une seule requête:

SELECT Id, Score,
       (CASE WHEN @prev_value = Score THEN @rank_count
             WHEN @prev_value := Score THEN @rank_count := @rank_count + 1
        END) AS Rank
FROM (SELECT s.*
      FROM Scores s
      ORDER BY Score s
     ) s CROSS JOIN
     (SELECT @prev_value := NULL, @rank_count := 0) params;


0 commentaires