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

SQL Procédural MySQL Discussion :

Création d'un 'ALIAS conditionnel' [MySQL-5.5]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut Création d'un 'ALIAS conditionnel'
    Bonjour,

    Je souhaite compter, dans deux colonnes créées à cet effet, dans une même requête, les occurrences issues d'une même colonne. En pratique mon pb est le suivant:

    Soit une table: users
    Ses 3 colonnes:
    user_name,sexe,fonction

    Je veux construire une requête qui, par fonction, restitue le nombre d'hommes dans une colonne m et le nombre de femmes dans une colonne f.
    J'ai tenté , sans succès, la requête suivante:

    SELECT fonction , COUNT(sexe) as m
    FROM users
    GROUP BY fonction
    WHERE sexe = "M"
    UNION
    SELECT fonction , COUNT(sexe) as f
    FROM users
    GROUP BY fonction
    WHERE sexe = "F"

    La requête retourne un résultat mais avec un seul nom de colonne : m.
    Les résultats qui, devraient se trouver en colonne f sont restitués dans la colonne m.

    Une idée ?

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Points : 179
    Points
    179
    Par défaut
    Bonjour,

    Il suffit de faire simplement la somme des hommes et des femmes par fonction de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT fonction,
    	sum(CASE WHEN SEXE = 'M' THEN 1 ELSE 0 END) as nb_hommes,
    	sum(CASE WHEN SEXE = 'F' THEN 1 ELSE 0 END) as nb_femmes
    FROM users
    GROUP BY fonction
    MvK
    Les questions ne sont pas obligées d'avoir du sens. Mais les réponses, si.
    Terry Pratchett (Procrastination)

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 57
    Points
    57
    Par défaut
    J'ai trouvé, il suffisait de connaître l'existence de: SUM(IF(....

    SELECT SUM(IF(maCondition1)) As m,SUM(IF(maCondition2)) AS f,....

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

Discussions similaires

  1. Création d'un alias dynamique sur delphi
    Par Ghilas1985 dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/11/2009, 22h49
  2. [phpLdapAdmin] Création d'un alias
    Par Jedir dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/02/2008, 16h15
  3. Création d'un alias d'un répertoire ??
    Par Ric_ dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h04
  4. Création d'un alias sur base données "Microsoft Text Dr
    Par defluc dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/06/2005, 08h28
  5. Création d'un alias via mon application
    Par Neilos dans le forum C++Builder
    Réponses: 3
    Dernier message: 18/10/2003, 23h29

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