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 MySQL Discussion :

count aprés group by


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut count aprés group by
    Bonjour tous le monde
    J'ai une requete avec group by et je veux le compte des ligne groupé
    ex
    le tableau par default est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    +---------+------+
    | espece  | sexe |
    +---------+------+
    | oiseau  | NULL |
    | oiseau  | NULL |
    | oiseau  | NULL |
    | oiseau  | NULL |
    | oiseau  | f    |
    | oiseau  | f    |
    | oiseau  | f    |
    | chat    | f    |
    | chat    | f    |
    | chat    | f    |
    | chat    | m    |
    | chien   | f    |
    | chien   | f    |
    | chien   | f    |
    | chien   | f    |
    | chien   | m    |
    | chien   | m    |
    | hamster | f    |
    | serpent | m    |
    +---------+------+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT espece, sexe FROM animal GROUP BY espece, sexe;
    +---------+------+
    | espece  | sexe |
    +---------+------+
    | oiseau  | NULL |
    | oiseau  | f    |
    | chat    | f    |
    | chat    | m    |
    | chien   | f    |
    | chien   | m    |
    | hamster | f    |
    | serpent | m    |
    +---------+------+
    et je veu un compte qui m'affichera le nombre de ligne pour chaque escpece
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    +---------+------+----------+
    | espece  | sexe | COUNT(*) |
    +---------+------+----------+
    | oiseau  | NULL |        2 |
    | oiseau  | f    |        2 |
    | chat    | f    |        2 |
    | chat    | m    |        2 |
    | chien   | f    |        2 |
    | chien   | m    |        2 |
    | hamster | f    |        1 |
    | serpent | m    |        1 |
    +---------+------+----------+
    Sincère salutation

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Toutes les colonnes du SELECT ne figurant pas dans une fonction de groupage doivent figurer dans le GROUP BY sous peine de récupérer pour les colonnes absentes des résultats aléatoires.

    Toi tu as utilisé GROUP BY pour faire un DISTINCT.

    Si tu veux seulement savoir combien il y a de lignes par espèces, indépendamment du sexe, tu fais cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT espece, COUNT(*) AS nombre
    FROM animal 
    GROUP BY espece
    Si tu veux le nombre de ligne par couple {espece, sexe}, tu fais cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT espece, sexe, COUNT(*) AS nombre
    FROM animal 
    GROUP BY espece, sexe
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Merci pour ta réponce

    Moi ce que je veux est le nombre de ligne afficher par ecpece

    ta diexieme requete d'aprés l'exemple va afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    +---------+------+----------+
    | espece  | sexe | COUNT(*) |
    +---------+------+----------+
    | oiseau  | NULL |        4 |
    | oiseau  | f    |        3 |
    | chat    | f    |        3|
    | chat    | m    |        1 |
    | chien   | f    |        4 |
    | chien   | m    |        2 |
    | hamster | f    |        1 |
    | serpent | m    |        1 |
    +---------+------+----------+
    moi ce que je veu et le compte de ligne

    pour oiseau il ya 2 ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    | espece  | sexe | COUNT(*) |
    +---------+------+----------+
    | oiseau  | NULL |        2 |
    | oiseau  | f    |        2 |
    | chat    | f    |        2|
    | chat    | m    |        2 |
    | chien   | f    |        2 |
    | chien   | m    |        2 |
    | hamster | f    |        1 |
    | serpent | m    |        1 |
    +---------+------+----------+

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Donc tu veux le nombre de lignes par espèce, soit ma première requête, puis y associer ensuite le sexe, donc faire une jointure de la requête avec la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT a.espece, a.sexe, tmp.nombre
    FROM animal a
    INNER JOIN 
    (
    	SELECT espece, COUNT(*) AS nombre
    	FROM animal 
    	GROUP BY espece
    ) tmp ON tmp.espece = a.espece
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Merci pour la raiponce, mais je croix que tu na pas bien compris ou j'ai pas bien expliqué mon problème.

    je ce que je veut c'est après exécution de requête group by ecpece, sexe , de ce résultat je veut le count d’espèce.

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    array = SELECT espece, sexe FROM animal GROUP BY espece, sexe;
     
    select *, count(escpece) as nbr from array  GROUP BY espece

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Si tu expliquais mieux ton besoin, ce serait plus simple !
    C'est tellement bizarre de répéter le nombre de lignes sur toutes les lignes de chaque espèce que ça m'a perturbé.

    Reprenons...

    Comptage des sexes différents par espèce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT espece, COUNT(DISTINCT sexe) AS nb_sexe
    FROM animal
    GROUP BY espece
    Récupération des différents couples {espece, sexe} :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT a.espece, a.sexe, tmp.nb_sexe
    FROM animal a
    INNER JOIN
    (
    	SELECT espece, COUNT(DISTINCT sexe) AS nb_sexe
    	FROM animal
    	GROUP BY espece
    ) tmp ON tmp.espece = a.espece
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2007, 16h36
  2. [requete] Probleme de COUNT() et GROUP BY
    Par cadoudal56 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/12/2006, 19h23
  3. problème count et group by
    Par zulkifli dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/11/2006, 04h53
  4. Requête récalcitrante avec un tri par COUNT sans GROUP BY
    Par Ancalagon77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2006, 14h27
  5. Pb de COUNT et GROUP BY simple mais sans requête imbriquées
    Par vanquish dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/10/2004, 09h45

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