Comment trouver le rang

Bonjour ,
J’ai une table avec les notes de mes élèves comme
Id_el Note
1 18
2. 10
3 19
et j’aimerais avoir le rang de chaque élève en fonction de sa notes. Comme 19 (la note la plus élèves ) ->1er, 18(la suivante ) ->2eme, 10(le dernière de la classe )->3 ; en gardant en même temps l’ordre alphabétique de mes Noms. Aidez-moi à le faire s’il vous plaît ?
Merci d’avance

1 réponse

  1. Modérateur
    Bonjour,

    ça dépend de ta version de mysql.
    Si elle est >= 8 , tu peux utiliser
    https://www.mysqltutorial.org/mysql-window-functions/mysql-rank-function/

    Sinon, faudra passer par une sous-requête du genre
    SELECT  @rank := @rank + 1 AS 'Rank', Id_el, Note
        FROM  tatable
        JOIN  ( SELECT  @rank := 0 ) AS init
        ORDER BY  Note DESC;
    


    Et si tu veux, en plus, avoir un ordre alphabétique sur le nom de te tes élèves, il te faudra faire une jointure avec la table qui contient leur nom et refaire un order by dessus.

    1. Waou ! Ca marche vraiment. Merci beaucoup. Étant que débutant , c’est ma première fois de voir @ dans une requête. As tu des liens de tutoriels ou je pourrai lire davantage la dessus ? Vraiment merci. Problème résolu