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 :

Plusieurs Select Count Select [MySQL-5.6]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeuse Web et Mobile
    Inscrit en
    Août 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeuse Web et Mobile
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 30
    Par défaut Plusieurs Select Count Select
    Bonjour,
    J'ai besoin de de récupérer:

    1. le nombre de jour total d'une formation (somme de DUREE_HP)
    2. nombre d'agents (COUNT select) concernés par :
      • pôle (N_TSERV4),
      • catégorie (C_SOGIGRAD)
      • sexe (N_TSEXE)
      • grade (N_TGRAD)
      • fonction (N_TFONC)
      • statut (N_TTEMPS)
      • organisme (N_BORGA)
      • domaine (N_TTHEM)


    Pour le premier point je fais la requête suivante:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT SUM(DUREE_HP)
      FROM RH_HISTPERS  
      WHERE DATDEBSTAG >'20190101' 
      AND DATFINSTAG < '20191231' 
      AND C_TTYPE <> '10004' 
      AND C_TSERV4 IN('HB1CAB1','HB2CAB3','HB2CAB4','HB2CAB1','HB2CAB6','HE2ASS4','HE2ASS6','HE2ASS2','HE2ASS3','HJ2INF2','HP2POP6','HH1DIR1')
    Qui peut également être construit comme suit:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT SUM(DUREE_HP) as NB
     FROM 
     (
        SELECT *
        FROM RH_HISTPERS  
        WHERE DATDEBSTAG >'20190101' 
        AND DATFINSTAG < '20191231' 
        AND C_TTYPE <> '10004' 
        AND C_TSERV4 IN('HB1CAB1','HB2CAB3','HB2CAB4','HB2CAB1','HB2CAB6','HE2ASS4','HE2ASS6','HE2ASS2','HE2ASS3','HJ2INF2','HP2POP6','HH1DIR1') 
     ) AS NB
    Pour le second point je fais la requete suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT COUNT(*) AS NbAgent
    FROM
    (
      SELECT COUNT(*)
      FROM RH_HISTPERS  
      WHERE DATDEBSTAG >'20190101' 
      AND DATFINSTAG < '20191231' 
      AND C_TTYPE <> '10004' 
      AND C_TSERV4 IN('HB1CAB1','HB2CAB3','HB2CAB4','HB2CAB1','HB2CAB6','HE2ASS4','HE2ASS6','HE2ASS2','HE2ASS3','HJ2INF2','HP2POP6','HH1DIR1') 
      AND N_TFONC LIKE "ASSISTANT COMMUNICATION"
      GROUP BY C_BPERS
    ) AS NbAgent
    Tout se trouve dans la même table (pas top je sais mais c'est pas moi qui ai créé la table ^^")
    Le problème est que je voudrais afficher chacun des éléments dans une colonne différente style :
    N_TFONC | C_SOGIGRAD | N_TGRAD | N_TTEMPS | N_TSEXE | N_TSERV4 | N_BORGA | N_TTHEM | NB | NbAgent

    Et je n'arrive pas à créer la requête complète à cause du count(select...), si quelqu'un pourrait m'aiguiller svp

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    Bonjour,
    Pour compter sur plusieurs critères, tu peux faire une requête du genre:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select sum(case when macol = 'X' then 1 else 0 end),sum(case when macol = 'Y' then 1 esle 0 end)
    from MaTable
    where MaCol in ('X','Y')

    Tu peux aussi ajouter des colonnes non groupées, il faut juste les mettre dans le SELECT et ajouter une clause GROUP BY avec ces colonnes.

    Tatayo.

  3. #3
    Membre averti
    Femme Profil pro
    Développeuse Web et Mobile
    Inscrit en
    Août 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeuse Web et Mobile
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 30
    Par défaut
    J'ai du mal à comprendre ce code car je n'ai jamais fait ce format là
    mais la le count il n'est que pour le nombre d'agent concerné pour les autres c'est un SELECT classique sauf pour le SUM en sachant que si je fais un GROUP BY DUREE_HP la requête ne me renvoi pas le total mais plusieurs (dans le cas où je n'ajoute pas les autres éléments pour tester)

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    J'ai du mal à saisir…
    Est-ce que tu peux nous donner un jeu de test et le résultat attendu ?

    Tatayo.

  5. #5
    Membre averti
    Femme Profil pro
    Développeuse Web et Mobile
    Inscrit en
    Août 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeuse Web et Mobile
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 30
    Par défaut
    En gros je voudrais l'affichage suivant :
    Nom : tableau.png
Affichages : 244
Taille : 8,7 Ko

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 447
    Par défaut
    Citation Envoyé par tatayo Voir le message
    J'ai du mal à saisir…
    Est-ce que tu peux nous donner un jeu de test et le résultat attendu ?

    Tatayo.

  7. #7
    Membre averti
    Femme Profil pro
    Développeuse Web et Mobile
    Inscrit en
    Août 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeuse Web et Mobile
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2014
    Messages : 30
    Par défaut
    Voila ce qui se trouve dans la base de données (J'ai enlever les colonnes inutiles car y en a beaucoup trop:
    Nom : tableau 2.png
Affichages : 260
Taille : 146,6 Ko

  8. #8
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 961
    Par défaut
    Bonjour,

    Rien à voir entre ce que la colonne peut contenir et l'évaluation d'une constante.

    Et vous le savez bien car vous avez mixé les écritures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      AND C_TSERV4 IN('HB1CAB1','HB2CAB3','HB2CAB4','HB2CAB1','HB2CAB6','HE2ASS4','HE2ASS6','HE2ASS2','HE2ASS3','HJ2INF2','HP2POP6','HH1DIR1') 
      AND N_TFONC LIKE "ASSISTANT COMMUNICATION"
    Ce qui est valable pour une conditionnelle est aussi valable pour l'autre.

    Vu qu'il n'existe pas de colonne "ASSISTANT COMMUNICATION" ce n'est pas la bonne syntaxe.

    Donc la remarque d'escartefigue est sans appel.

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

Discussions similaires

  1. [A-00] Count(Distinct) avec plusieurs Select et Group by...
    Par Thomak dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 30/10/2008, 11h11
  2. Procédure stockée avec plusieurs SELECT
    Par amatollah dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/03/2006, 21h26
  3. Evenement Jlist plusieurs selection
    Par Blast dans le forum Composants
    Réponses: 1
    Dernier message: 16/03/2006, 17h44
  4. plusieurs selections selon sur colonne different critere
    Par richton95 dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/01/2006, 17h25
  5. Plusieurs SELECT dans l'ouverture d'une connection
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 01/04/2005, 11h09

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