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 :

Multiples COUNT avec Condition


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut Multiples COUNT avec Condition
    Bonjour à tous sujet récurrent et question de niveau débutant

    mais je n'ai pas tout à fait trouvé ce que je cherchais à part passer par des requêtes imbriquées ce qui est assez lourd en écriture

    je cherche une solution élégante pour faire un comptage conditionnel sur une colonne précise, sachant que j'ai plusieurs colonnes qui nécessitent le même traitement avec des conditions différentes, donc pas de where global possible après le from

    Par exemple je veux compter des effectifs par entité, chaque salarié étant identifié par une clé

    mon effectif total est donné par

    COUNT(distinct clé)

    maintenant je veux un truc du genre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    COUNT(distinct clé) where entité = 1,
    COUNT(distinct clé) where entité = 2,
    COUNT(distinct clé) where entité = 3,
    COUNT(distinct clé) where entité = 4,
    ...

    y a-t-il une syntaxe élégante, qui ne nécessite pas de créer une table intermédiaire, ou de faire des selects imbriqués

    merci à tous

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour

    Regardez du coté du GROUP BY

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT entité, COUNT(distinct clé) 
    FROM ???
    GROUP  BY entité
    Apprenez le langage SQL ! Le site Web http://sqlpro.developpez.com/
    Comme mon ouvrage : https://www.amazon.fr/dp/2744074675/
    Peuvent vous y aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    merci pour votre retour mais je me suis mal expliqué, je ne souhaite pas intégrer les conditions multiples dans le group by justement, j'ai déjà un group by mais sur un autre critère. Les éléments segmentants ne sont pas tous intégrés au group by

    j'ai une structure actuellement du type


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    count(distinct clé)
    from A
    group by X
    where Y

    je veux migrer vers un truc du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    count(distinct clé) where Y1,
    count(distinct clé) where Y2,
    count(distinct clé) where Y3
    ...
    from A
    group by X

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    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 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Pour plus de clarté, communiquez un extrait de votre jeu de données en entrée, et un exemple de résultat attendu en sortie + les explications sur les règles à appliquer pour obtenir ce résultat

  6. #6
    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 790
    Points
    30 790
    Par défaut
    C'est donc un PIVOT que tu cherches à faire...
    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.

  7. #7
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    non c'est bon merci à tous j'ai trouvé la solution qui fait exactement ce que je voulais faire
    ça ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		count (distinct case when A.libelle_csp='AGRICULTEURS' then A.cle else '' end) as NBAGRICULTEURS,
    		count (distinct case when A.libelle_csp='ARTISANS' then A.cle else '' end) as NBARTISANS,
    		count (distinct case when A.libelle_csp='CADRES' then A.cle else '' end) as NBCADRES,
    		count (distinct case when A.libelle_csp='INTERMEDIAIRES' then A.cle else '' end) as NBINTERMEDIAIRES,
    		count (distinct case when A.libelle_csp='EMPLOYES' then A.cle else '' end) as NBEMPLOYES,
    		count (distinct case when A.libelle_csp='OUVRIERS' then A.cle else '' end) as NBOUVRIERS,
    		count (distinct case when A.libelle_csp='RETRAITES' then A.cle else '' end) as NBRETRAITES,
    		count (distinct case when A.libelle_csp='AUTRES INACTIFS' then A.cle else '' end) as NBINACTIFS,
    		count (distinct case when A.libelle_csp='AUTRES' then A.cle else '' end) as NBAUTRES,
    bon c'était pas difficile en fait désolé pour le ramdam, en espérant que ça serve
    si quelqu'un a des conseils pour des sources sympas en SQL avec des exemples je suis preneur j'ai beaucoup de mal à trouver de la doc, je suis plutôt un vb-guy à la base alors ça me dépayse

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Gorzyne Voir le message
    si quelqu'un a des conseils pour des sources sympas en SQL avec des exemples je suis preneur j'ai beaucoup de mal à trouver de la doc, je suis plutôt un vb-guy à la base alors ça me dépayse
    http://sqlpro.developpez.com/
    Et mes livres sur le SQL !

    a +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

Discussions similaires

  1. multiple count avec condition
    Par psgman113 dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/08/2011, 12h00
  2. Count avec condition
    Par sherpa421 dans le forum iReport
    Réponses: 1
    Dernier message: 20/11/2009, 11h54
  3. Count avec condition
    Par ElBarto38 dans le forum SQL
    Réponses: 5
    Dernier message: 05/11/2009, 15h56
  4. Réponses: 1
    Dernier message: 22/12/2008, 10h15
  5. Count avec condition
    Par sourivore dans le forum Langage SQL
    Réponses: 24
    Dernier message: 22/08/2005, 22h41

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