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

Requêtes PostgreSQL Discussion :

Comprend pas ce qui ne va pas dans mon count()


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre actif

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 370
    Points : 251
    Points
    251
    Par défaut Comprend pas ce qui ne va pas dans mon count()
    Bonjour,
    J'ai la requette suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WITH scpt AS (
    SELECT
    sc.codcpt || sc.num_cpte AS sous_compte
    ,sc.intitule AS libelle
    FROM l.sous_compte sc
    GROUP BY sous_compte, intitule
    )
    SELECT sous_compte
     ,libelle
     ,count(scpt.sous_compte)
    FROM scpt
    WHERE sous_compte LIKE '6%' OR sous_compte LIKE '7%'
    GROUP BY scpt.sous_compte, scpt.libelle
    ORDER BY count(sous_compte),sous_compte DESC
    Avec le With, je reconstruis la liste de mes comptes + intitulés.
    Avec le SELECT final, j'affiche la liste et je compte le nombre de fois que je trouve de sous-compte. Je fais cela pour vérifier qu'il n'y a pas 2 fois le même sous-compte avec des libellés différents.

    Dans les faits, je vois qu'il y a des doublons de sous-compte avec des libellés différents. Pourquoi dans le résultat du count je n'obtiens que des 1?

    Cordialement,
    Vandman

  2. #2
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Le problème vient du fait que "libelle" est dans la clause GROUP BY.
    Il faut l'enlever ou l'utiliser dans une fonction d'aggregat comme string_agg ce qui donne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    WITH scpt AS (
    SELECT
    sc.codcpt || sc.num_cpte AS sous_compte
    ,sc.intitule AS libelle
    FROM l.sous_compte sc
    GROUP BY sous_compte, intitule
    )
    SELECT sous_compte
     ,string_agg(libelle,"|")
     ,count(scpt.sous_compte)
    FROM scpt
    WHERE sous_compte LIKE '6%' OR sous_compte LIKE '7%'
    GROUP BY scpt.sous_compte --, scpt.libelle
    ORDER BY count(sous_compte),sous_compte DESC
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/02/2016, 15h53
  2. Réponses: 16
    Dernier message: 25/03/2010, 11h09
  3. [MySQL] session qui ne prend pas ce qu'il y a dans la requête
    Par schats dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/03/2009, 16h01
  4. fichier shell qui ne fonctionne pas avec le cron mais fonctionne dans le shell
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/10/2008, 20h12

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