Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classement par nombre de votes en SQL

Sujet résolu
    2 décembre 2011 à 12:18:11

    Hello chers Zéros,

    Pour illustrer mon problème, j'ai des rows SQL qui se présentent sous la forme suivante :

    id member_id question_id response
    1 31 101 7
    2 34 101 6
    3 37 101 6
    4 40 101 6
    5 41 102 4
    6 42 103 5
    7 43 101 6
    8 44 101 5
    9 45 101 1


    Ce sont les valeurs du champs "response" qui m'intéressent.

    Mon but principal est de remplir un podium avec les positions 1er, 2ème et 3ème.
    Ces positions sont définies simplement par le nombres de rows ayant une même réponse. Dans mon exemple, le personnage n°6 est le gagnant avec 4 votes, puis en seconde place le personnage n°5 avec 2 votes et enfin un dernier personnage au pif (ça n'a vraiment pas d'importance en cas d'égalité) histoire de remplir le podium.

    Le problème est que je n'arrive pas à trouver de requête qui me fasse ce tri là. J'ai essayé avec des GROUP BY, ORDER BY, MAX(), COUNT() ... et j'en passe, impossible d'arriver à mes fins.
    Il faut dire aussi que je n'ai pas de super compétences en SQL.

    Quelqu'un aurait t-il l'amabilité de m'aider à trouver LA requête ou même me donner une piste ?

    Merci à vous :)
    jm
    • Partager sur Facebook
    • Partager sur Twitter
      2 décembre 2011 à 12:42:07

      Pourtant, un simple GROUP BY + COUNT() + ORDER BY ferait l'affaire. T'as essayé quoi ??
      • Partager sur Facebook
      • Partager sur Twitter
        2 décembre 2011 à 14:21:02

        Hello, dsl pour le temps de réponse, la base était en maintenance au boulot et j'ai pas pu utiliser SQL Server pour tester à nouveau.

        Cependant je viens de me remettre sur le problème après la pause déjeuner (à tête reposée) et notamment grâce à ton message j'ai pu m'apercevoir à quel point j'étais pas doué (pour ma défense j'ai pas bu de café ce matin ^^ )

        Effectivement il suffisait de faire qqch comme ça :

        SELECT TOP 3
        
        	response,
        	COUNT(response) AS nbResponses
        
        FROM [My_Database].[dbo].[Member_Responses]
        
        GROUP BY response
        
        ORDER BY nbResponses DESC
        

        pour obtenir :

        response nbResponses
        6 4
        5 2
        4 1

        Du coup je peux traiter ces résultat pour mon podium.

        Merci néanmoins pour ton aide sur quels keywords utiliser ;)

        JM
        • Partager sur Facebook
        • Partager sur Twitter

        Classement par nombre de votes en SQL

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown