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 :

COUNT total et COUNT "conditionnel"


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut COUNT total et COUNT "conditionnel"
    Hello,

    Je ne suis pas fortiche du SQL et je me pose une petite question concernant l'utilisation de COUNT dans une requete SQL.
    Par exemple, soit une table qui contiendrait :
    - NumSerie
    - NomPiece
    - PieceProduite (contient 'O' ou 'N')


    Je souhaiterai faire une seule requete SQL qui me donnerai le nombre de pieces pour chaque NumSerie (ça c'est assez facile ) et le nombre de pieces produites (ou le champ PieceProduite='O')

    ça donnerai quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT NumSerie, COUNT(1) as NbPieces, COUNT???? as NbProduite
    FROM tbl
    GROUP BY NumSerie
    Que mettre à la place de COUNT????

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Comme ça, tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  NumSerie
        ,   COUNT(1) as NbPieces
        ,   SUM(CASE WHEN PieceProduite = 'O' THEN 1 ELSE 0 END) as NbProduite
    FROM    tbl
    GROUP BY NumSerie
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 208
    Points
    208
    Par défaut
    Bonjour,

    Ou en SQL "passe-partout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a.numSerie, COUNT(a.nompiece),
    (select count(b.nompiece) FROM tb1 b where b.NumSerie = a.numserie AND b.PieceProduite = 'O')
    FROM tb1 a
    GROUP BY a.NumSerie
    ORDER BY a.NumSerie;
    Cordialement

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut
    Merci Al1_24.

    Effectivement, c'est "tout simple" quand on connait l'existence du CASE...

    En plus, dans mon cas, c'est encore plus simple.
    Je pensais que le champ PieceProduite contiendrait 'O' ou 'N', mais en fait, il contient 0 ou 1 (en numérique).
    Du coup, il suffit de faire
    . Quel je fais, des fois....

    Merci encore

  5. #5
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    En quoi la requete de al1_24 ne serait pas du SQL passe partout ?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 127
    Points : 208
    Points
    208
    Par défaut
    Bonjour,

    désolé, mon commentaire était peut être un peut rapide parce que au moment où j'allais valider ma réponse, j'ai vu que al1-24 avait répondu et j'ai voulu expliquer l'alternative proposée.

    Disons que ma solution est simplement une autre solution, mais celle de al-24 est probablement plus performante.

    Cordialement

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut
    En tout cas, merci de ta participation, semaphore1984

    Il est toujours intéressant d'avoir plusieurs avis pour comparaison.

    A bientôt

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

Discussions similaires

  1. count total mysql
    Par maloy dans le forum Langage
    Réponses: 3
    Dernier message: 09/02/2012, 02h51
  2. Count (total record)
    Par calison3 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/03/2006, 16h49

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