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 :

problème avec count


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut problème avec count
    Bonjour,

    J’ai un problème dans la réalisation d’une requête SQL. Je voudrais compter le nombre d’éléments par année et par type de produit.

    Ex :
    J’ai le tableau suivant :

    Année produit
    2006 Produit1
    2006 Produit2
    2006 Produit2
    2006 Produit2
    2006 Produit3
    2006 Produit3
    2006 Produit3
    2007 Produit1
    2007 Produit1
    2007 Produit1
    2007 Produit2
    2007 Produit3
    2007 Produit3
    2007 Produit3
    2008 Produit1
    2008 Produit1
    2008 Produit2
    2008 Produit2
    2008 Produit2
    2008 Produit2
    2008 Produit3
    2009 Produit3
    2009 Produit1
    2009 Produit2
    2009 Produit2
    2009 Produit2
    2009 Produit3
    2009 Produit3


    Je voudrais avoir le résultat suivant :
    Année Produit Nombre_produit
    2006 Produit1 1
    2006 Produit2 3
    2006 Produit3 3
    2007 Produit1 3
    2007 Produit2 1
    2007 Produit3 3
    2008 Produit1 2
    2008 Produit2 4
    2008 Produit3 1
    2009 Produit1 1
    2009 Produit2 3
    2009 Produit3 3

    Lorsque j’exécute ma requête, cela fonctionne lorsque je ne sélectionne qu’une date dans la condition « where » (cf ma requête ci-dessous).

    Par contre, quand je mets plusieurs dates, il y a des erreurs dans les résultats : j’ai l’impression que la requête fait automatiquement la somme des count sur les 3 années au lieu de seulement donner le comptage sur une année.

    Voici le résultat obtenu en erreur :

    Annee Produit Nombre_produit
    2006 Produit1 7
    2006 Produit2 11
    2006 Produit3 10
    2007 Produit1 7
    2007 Produit2 11
    2007 Produit3 10
    2008 Produit1 7
    2008 Produit2 11
    2008 Produit3 10
    2009 Produit1 7
    2009 Produit2 11
    2009 Produit3 10


    cf mon code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table rejets as
    select distinct annee, produit, count(produit) as Nombre_produit
    from class1
    where annee = 2008 
    GROUP BY produit
    ORDER BY annee
    Quelqu'un a-t-il une idée de mon erreur ? Je me demande si il ne me serait pas nécessaire de faire une sous requête...

    nb: dans le code j'ai sélectionné l'année 2008, mais j'aimerais justement utiliser le code sur plusieurs année ex: where annee in(2005, 2006, 2007, 2008)...

    Si quelqu'un pouvait m'aider, ce serait vraiment sympa !

    Merci d'avance

  2. #2
    Membre éclairé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Par défaut
    quand tu fais un aggrégat (count, sum, etc.) tu dois mettre les mêmes champs dans le select que dans le group by
    Ton select doit donc donner:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT annee, produit, count(produit) AS Nombre_produit
    FROM class1
    WHERE annee = 2008 
    GROUP BY anne, produit
    ORDER BY annee

    et tu n'es pas obligé de mettre un WHERE, ça fonctionnera sans:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT annee, produit, count(produit) AS Nombre_produit
    FROM class1
    GROUP BY anne, produit
    ORDER BY annee

    tu peux faire ton create table sans crainte ensuite.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    DISTINCT est inutile avec un GROUP BY.

  4. #4
    Membre éclairé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Par défaut
    en effet...mais j'ai "betement" recopier la requete

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    merci
    Je me demandais si on pouvait faire 2 group by... je pensais qu'on pouvait pas, c'est pour ça que j'avais essayé le distinct sur annee exo...

    merci beaucoup en tous cas, je viens d'apprendre quelque chose

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec COUNT
    Par bigben89 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/11/2008, 17h26
  2. Problème avec COUNT
    Par knoodrake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/04/2008, 09h56
  3. Problème avec COUNT() et la récupération des valeurs..
    Par Marshall_Mathers dans le forum Outils
    Réponses: 4
    Dernier message: 25/06/2007, 12h26
  4. Problème avec COUNT
    Par LhIaScZkTer dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/01/2006, 02h16
  5. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 15h49

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