IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Deux clauses Group by dans une seule requête


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut Deux clauses Group by dans une seule requête
    Bonjour à tous,

    Je me demande si c'est possible d'utiliser 2 fois Group by sur une meme requete ?

    En effet j'ai la table suivante :

    Vendeur Produit Quantité
    1 A 12
    2 G 8
    1 C 5
    1 A 3
    2 G 14

    Je voudrais avoir le total des ventes pour chanque vendeur et chaque produit comme suit :

    Vendeur Produit Quantite
    1 A 15 (12+3)
    1 C 5
    2 G 22 (8+14)

    J'ai pensé à cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Vendeur, Produit, SUM(Quantite)
    from table
    Group by Vendeur
    Ce qui je pense répond uniquement à "Chaque vendeur" mais pas à "Chaque produit)
    Raison pour la quelle je me demande si c'est possible d'utiliser 2 fois Group By

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 463
    Par défaut
    Bonjour,
    On ne peut pas mettre 2 GROUP BY dans la même requête, mais on peut mettre plusieurs colonnes dans un GROUP BY.
    D'ailleurs toutes les colonnes qui ne font pas l'objet d'une agrégation (sum,avg...) DOIVENT être dans la clause GROUP BY.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Merci,

    Donc je pourrais faire ceci ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Vendeur, Produit, SUM(Quantite)
    from table
    Group by Vendeur, Produit
    En ajoutant Produit dans Group by cela répondrai à ma question ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 463
    Par défaut
    Tout à fait. Mais il suffit de faire le test pour s'en convaincre
    Il y a des tutoriels SQL ici, par exemple celui-ci qui traite justement des regroupements.

    Bonne lecture !

    Tatayo.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    J'aurais bien aimé pouvoir tester mais je travaille sur papier pour l'intant.

    Merci pour la réponse.

    Je veux compliquer un peu les choses pour apprendre mieux car je suis entrain d'apprendre le SQL

    Vendeur et produit sont des id dans une table qui s'appelle Vente, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select VendeurID, ProduitID, SUM(Quantite)
    from Vente
    Group by VendeurID, ProduitID
    Les vendeurs et produits sont dans des tables respectives avec nom et id comme suit

    Vendeur
    IdVen NomVen

    Produit
    IdProd NomProd

    Je voudrais récuperer les noms des produits et vendeurs au lieu des id donc je dois aller les chercher dans leurs tables respectives, est ce que cette requete a un sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select VendeurID, NomVen, ProduitID, NomProd, SUM(Quantite)
    from Vendeur, Produit
    Group by VendeurID, ProduitID
    Inner join Vente ON Vendeur.IdVen=Vente.VendeurID, Produit.IdProd=Vente.ProduitID

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Je pense que Group by doit etre la fin comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select VendeurID, NomVen, ProduitID, NomProd, SUM(Quantite)
    from Vendeur, Produit
    Inner join Vente ON Vendeur.IdVen=Vente.VendeurID, Produit.IdProd=Vente.ProduitID
    Group by VendeurID, ProduitID

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/10/2011, 11h07
  2. Deux requêtes dans une seule requête, est-ce possible ?
    Par Stephane_br dans le forum Développement
    Réponses: 3
    Dernier message: 08/07/2011, 15h35
  3. Réponses: 2
    Dernier message: 01/10/2010, 14h00
  4. Deux COUNT dans une seule requête
    Par aya02 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/07/2010, 10h17
  5. [Oracle] Deux COUNT dans une seule requête
    Par EvilJajuka dans le forum Débuter
    Réponses: 5
    Dernier message: 30/09/2009, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo