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 :

Requête avec count et where


Sujet :

Langage SQL

  1. #1
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut Requête avec count et where
    Bonjour,

    J'ai une table TABLE contenant les champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    _id (INTEGER PK)
    NAME (VARCHAR)
    ACT (INTEGER) 
    CHECKED (INTEGER)
    Les entrées ont un NAME quelconque, un ACT entre 1 et 5, et CHECKED qui vaut 0 pour false et n'importe quel entier pour true.

    Le but est d'obtenir un tableau de résultat comportant comme colonnes : ACT, compte d'entrée pour cet ACT, compte d'entrée CHECKED pour cet ACT.

    En gros, le tableau devra ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ACT  |  TOTAL  |  CHECKED
    1     |  21     |  5
    2     |  24     |  20
    3     |  27     |  7
    4     |  10     |  8
    5     |  41     |  11
    J'arrive en fait à récupérer soit les colonnes ACT et TOTAL dans le même résultat, soit les colonnes ACT et CHECKED via les requêtes suivantes :

    ACT et TOTAL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ACT, count(*)
    FROM TABLE 
    WHERE ACT IN (select ACT from TABLE group by ACT)
    GROUP BY ACT
    ACT et CHECHED :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select ACT, count(*)
    FROM TABLE 
    WHERE ACT IN (select ACT from TABLE group by ACT) 
    AND CHECKED != 0
    GROUP BY ACT

    Comment faire pour ajouter la colonne manquante à l'un de ces deux résultats ?
    Un clavier Azerty en vaut deux.

  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 778
    Points
    30 778
    Par défaut
    En utilisant SUM et CASE...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  act
        ,   COUNT(*)    AS total
        ,   SUM(CASE checked WHEN 0 THEN 0 ELSE 1 END)  AS checked
    FROM    table 
    GROUP BY act
    En revanche, je n'ai pas bien saisi l'intéret de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ACT IN (select ACT from TABLE group by ACT)
    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 averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    L'idée était de parcourir les différentes valeurs possibles de ACT. Mais effectivement, le group by ACT revient à faire la même chose...

    Je ne connaissais pas SUM et CASE, effectivement, c'est relativement simple avec ces opérateurs.


    Merci beaucoup !
    Un clavier Azerty en vaut deux.

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

Discussions similaires

  1. Requête avec Count().
    Par SirDarken dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/07/2008, 19h14
  2. Imbrication de 2 requête avec "count" et division
    Par Chtulus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2008, 15h12
  3. Requête avec multiple clause where
    Par pgenet dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/03/2006, 14h59
  4. requête avec COUNT ?
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/02/2005, 15h46
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 19h02

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