Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SQL] Double group by...

Sujet résolu
    21 mars 2011 à 10:52:15

    Bonjour à tous,

    je suis bloqué sur une requête SQL :

    Je dispose de deux tables, une table A et une table B.

    La table A contient des ventes par magasin à une adresse donnée et la table B la liste des magasins,

    ce que je souhaite au final c'est obtenir les chiffres par département des ventes, seulement voici le problème :

    A un magasin correspond plusieurs entrées dans la table A, mais pas forcément dans le même département... Il faut en fait sommer sur la quantité vendue et diviser par le nombre d'occurence, puis regrouper par département... Seulement je n'arrive pas à faire ça avec une seule requête :(

    SELECT ID_MAGASIN, QUANTITE/COUNT(*), DEPT
    FROM A
    JOIN B ON ...
    GROUP BY ???
    


    le problème c'est qu'il faudrait faire un SUM sur QUANTITE/COUNT(*) par département mais pour cela je dois grouper par département, or pour réaliser le count je dois grouper par magasin... bref je suis coincé !

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2011 à 11:14:11

      Salut

      On pourrai avoir un petit jeu de test et le résultat attendus ? (je ne comprend pas pourquoi tu veux diviser par le nombre d'occurrence? peut être ai je mal compris )

      EDIT: si je comprend bien, tu veux le total des ventes par magasin et par département ?
      SELECT ID_MAGASIN, SUM(QUANTITE*PRIX), DEPT
      FROM A JOIN B 
      ON A.ID_MAGASIN = B.ID
      GROUP BY ID_MAGASIN, DEPT
      


      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2011 à 11:23:34

        Effectivement j'ai oublié d'indiquer le problème !

        Il y a plusieurs fois la même entrée pour le même magasin dans le même département si la vente concerne plusieurs personnes, avec à chaque fois la même quantité indiquée...
        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2011 à 11:44:23

          Citation : Tadzoa

          Il y a plusieurs fois la même entrée pour le même magasin dans le même département si la vente concerne plusieurs personnes, avec à chaque fois la même quantité indiquée...



          Citation : Tadzoa


          ce que je souhaite au final c'est obtenir les chiffres par département des ventes, seulement voici le problème


          Si tu veux la quantité des ventes par magasins et par département, alors le fait d'avoir plusieurs lignes quasiment identiques ne devrait pas rentrer en ligne de compte.

          J'ai édité en fonction de ce que je comprend.
          Mais un jeu de test et le résultat attendu sera bien utile ;)
          • Partager sur Facebook
          • Partager sur Twitter
            21 mars 2011 à 11:50:14

            Non parce que justement, là tu prendras en compte plusieurs fois la même vente.

            En fait le noeud du problème c'est : Comment faire pour sommer sur le champ quantité en s'assurant de ne compter qu'une seule fois les "doublons" qu'on peut distinguer grâce à la valeur Id_vente.

            Un cas concrêt

            Table A

            Id_Vente Quantite Client
            1 120 X
            1 120 Y
            2 52 W
            3 48 Z
            4 48 A

            Comment faire pour en pas prendre en compte toutes les entrées mais ici seulement
            120 + 52 + 48

            Merci de ton aide
            • Partager sur Facebook
            • Partager sur Twitter
              21 mars 2011 à 12:16:54

              Pourquoi pas le 2ième 48 ? Je vais supposé que c'est un oubli ou une erreur de ta part dans le calcul ou dans la valeur de l'id_vente correspondant
              Si je me cantonne à ton cas (sans prendre en compte le reste du problème)

              SELECT SUM(Quantite) FROM 
              (
                 (SELECT DISTINCT Id_Ventes, Quantite FROM a)t
              )
              


              Si pour la dernière ligne, tu ne t'es pas trompé tu obtiens 268 (120 + 52 + 48 + 48)
              Si l'id_vente de la dernière ligne devait être 3 alors tu obtiens bien 220 (120 + 52 + 48)
              • Partager sur Facebook
              • Partager sur Twitter
                21 mars 2011 à 12:38:02

                Pfiuu je suis fatigué, tu as été doué parce que je ne t'ai pas facilité la tâche en oubliant les 3/4 des infos.


                Merci de ton aide, ça marche au poil

                • Partager sur Facebook
                • Partager sur Twitter

                [SQL] Double group by...

                × 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