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 :

La requête COUNT [9.4]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut La requête COUNT
    Bonsoir,

    Sur Postgres, je dispose de deux tables une table :

    -Sur la première j'ai l'ensemble des départements et certains indicateurs (population, nb d'avc, nb de cancer, etc)

    -Sur la deuxième table, j'ai la liste des unités neuro vasculaire en France métropolitaine.

    Mon souhait serait d'ajouter à la première table le nombre d'Unité Neuro Vasculaire par département.

    Ci-joint, un aperçu des deux tables

    Pour cela j'ai essayé cette requête mais un message d'erreur s'affiche à chaque fois !

    Comment je pourrais remédier à cette erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *, COUNT(chu) FROM unv 
    LEFT JOIN fichier_principal ON dep=dep
    GROUP BY dep

    Merci d'avance.

    Cordialement,
    Images attachées Images attachées   

  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
    Citation Envoyé par Stéphane_MAN Voir le message
    Pour cela j'ai essayé cette requête mais un message d'erreur s'affiche à chaque fois !
    Quel message d'erreur ?
    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
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Il y a plusieurs erreurs dans votre requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *, COUNT(chu) FROM unv 
    LEFT JOIN fichier_principal ON dep=dep
    GROUP BY dep
    Votre colonne de jointure "DEP" porte le même nom dans les deux tables, il faut donc soit préfixer la colonne par le nom de table, soit préfixer avec un alias
    Même remarque concernant le groupage
    De plus, si vous voulez compter l'effectif total, il faut utiliser une table dérivée
    Si par contre vous voulez compter par groupe de colonnes, alors vous ne pouvez pas utiliser select *, les colonnes du select doivent être cohérentes avec celles du groupage

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup pour vos indications pertinentes ma requête a fonctionné mais j'ai encore un petit soucis.

    Moi je souhaite que ma requête me retourne aussi les valeurs égales à 0.

    Car certains départements n'ont pas d'unités neuro vasculaires.

    J'ai 96 départements mais que 67 lignes.

    Comment je pourrais remédier à ce problème.

    Cordialement,

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Pour quelle table et quelle colonne souhaitez vous afficher zéro pour les valeurs non trouvées ?
    Regardez la fonction COALESCE, ca devrait faire l'affaire : https://www.postgresql.org/docs/9.2/...nditional.html

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Je veux réaliser le compte sur ma première table avec les valeurs de la seconde.

    Je tiens à préciser que dans la seconde table contient la liste des unv en France métropolitaine, il y en a 112 et seulement dans 67 départements.

    Peut-être le problème vient de là, d'un coté j'ai 96 départements et de l'autre seulement 67 ?

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Désolé, mais ce n'est pas très clair, déjà quelle est la première et la seconde table, il y a une chance sur 2

    Communiquez un extrait de chacune de vos 2 tables et un exemple de résultat attendu

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Bonjour ,

    Voici, la première table ci-dessous, elle comptabilise tous les départements de la France métropolitaine (96 départements).

    Pièce jointe 233648

    Voici, la seconde table avec la liste des UNV en France qui compte 112 UNV réparti dans 67 départements.

    Nom : table unv.JPG
Affichages : 477
Taille : 124,6 Ko

    Et moi je veux comme résultat un compte du nombre d'unv par département.

    La requête fonctionne mais me retourne que 67 lignes alors que j'en souhaite 96.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT *, COUNT(chu) FROM unv 
    LEFT JOIN fichier_principal ON dep=dep
    GROUP BY dep
    Cordialement,

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Je pense que c'est quelque chose comme ça que vous cherchez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT T1.DEP
         , T1.Col2
         , [...]
         , COALESCE(T2.CNT, 0)     
    FROM   fichier_principal  AS T1
    LEFT OUTER JOIN
        (SELECT DEP, COUNT(DISTINCT CHU) AS CNT         
         FROM UNV                     
         GROUP BY DEP) AS T2                              
      ON T2.DEP = T1.DEP

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup c'est exactement ce que je voulais.

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

Discussions similaires

  1. Récuperer dans un formulaire le résultat d'une requête count
    Par jean-paul lepetit dans le forum IHM
    Réponses: 6
    Dernier message: 29/01/2007, 10h10
  2. Problème de requête count(*) avec DB2
    Par elsodiop dans le forum DB2
    Réponses: 3
    Dernier message: 30/11/2006, 16h11
  3. Requête count un peu chaud
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/06/2006, 14h43
  4. Requête Count(*)
    Par shr3dpit dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/05/2006, 15h21
  5. PB avec une requête Count
    Par Marion dans le forum ASP
    Réponses: 7
    Dernier message: 05/07/2004, 12h56

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