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

Discussion :

COUNT sur 1 colonne avec groupage sur les résultats : possible ? [9.5]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : septembre 2005
    Messages : 172
    Points : 111
    Points
    111
    Par défaut COUNT sur 1 colonne avec groupage sur les résultats : possible ?
    Bonjour,

    Petit soucis de requête que je ne vois pas du tout comment formuler.
    Exemple de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     id_utilisateur | check_user 
    ----------------+------------
                  2 | f
                  3 | t
                  3 | f
                  3 | f
                  5 | t
                  5 | t
    Je cherche à récupérer ce genre de résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     id_utilisateur | check_ok | check_nok
    ----------------+----------+-----------
                  2 |        0 |        1
                  3 |        1 |        2
                  5 |        2 |        0
    La colonne check_ok donne le nombre de ligne à TRUE et check_nok pour FALSE
    Est-il possible de faire cela en une seule requête ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    8 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 8 154
    Points : 26 328
    Points
    26 328
    Par défaut
    C'est un regroupement avec PIVOT.
    Je n'ai pas trouvé cette commande dans la documentation. Toutefois, c'est assez facile à faire avec une requête classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  id_utilisateur
        ,   SUM(CASE check_user WHEN 't' THEN 1 ELSE 0 END) AS check_ok
        ,   SUM(CASE check_user WHEN 'f' THEN 1 ELSE 0 END) AS check_nok
    FROM    matable
    GROUP BY id_utilisateur
    ;
    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 régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : septembre 2005
    Messages : 172
    Points : 111
    Points
    111
    Par défaut
    Merci à toi :-)
    Et en effet une fois la requête sous les yeux c'est tout simple...
    J'aurai jamais pensé utiliser CASE dans SUM()

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

Discussions similaires

  1. [SQL] Update avec un count sur une colonne de la meme table
    Par debdev dans le forum SAS Base
    Réponses: 5
    Dernier message: 28/01/2014, 16h46
  2. [2.0.1] Filtrer sur les colonnes avec BIRT
    Par nikado dans le forum BIRT
    Réponses: 2
    Dernier message: 07/08/2007, 12h22
  3. Réponses: 12
    Dernier message: 12/06/2006, 14h29
  4. [Oracle] Update sur 1 colonne avec condition existence (SUBSTR)
    Par magic charly dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2006, 13h57
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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