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 :

Mon besoin peut il se résoudre par une requête unique?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut Mon besoin peut il se résoudre par une requête unique?
    Salut à tous!

    Je possède actuellement une table dont la structure est la suivante:
    Nom_operateur, Date, resultat_essai

    Afin de remplir ma table, un opérateur effectue des essais et le resultat de chaque essai lorsqu'il aboutit est consigné dans le champ "resultat_essai"
    Si l'essai n'aboutit pas, j'ai quand même une ligne créée mais le champ resultat_essai sera positionné à NULL

    Je cherche maintenant à faire plusieurs type de reportings:
    Le pourcentage d'essai "abouti" par opérateur, par jour
    Le pourcentage d'essai "abouti" par opérateur, par semaine

    J'arrive à faire des requetes séparées me donnant le nb d'essai réalisés par jour ou semaine par opérateur, le nb d'essais aboutis par jour ou semaine par opérateur.
    Mais je n'arrive pas à tout avoir dans une seule requête.

    Ce que j'ai pour le moment:
    nb d'essais par jour par opérateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom_operateur, Date, count(*) FROM matable
    GROUP BY nom_operateur, Date
    nb d'essais par semaine par opérateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom_operateur, DATE_FORMAT(Date,"%U") AS semaine, count(*) FROM matable 
    GROUP BY nom_operateur, Semaine
    nb d'essais aboutis par jour par opérateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom_operateur, Date, count(*) FROM matable 
    WHERE resultat_essai IS NOT NULL
    GROUP BY nom_operateur, Date
    nb d'essais aboutis par semaine par opérateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom_operateur, DATE_FORMAT(Date,"%U") AS semaine, count(*) FROM matable 
    WHERE resultat_essai IS NOT NULL
    GROUP BY nom_operateur, Semaine
    Quelqu'un aurait une idée?

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je pense que l'option WITH ROLLUP de GROUP BY devrait te permettre d'arriver à tes fins.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Maljuna Kris Voir le message
    Saluton,
    Je pense que l'option WITH ROLLUP de GROUP BY devrait te permettre d'arriver à tes fins.
    Je viens de regarder l'option et je ne pense pas qu'elle pourra m'aider.
    Dans mon cas, c'est une colonne supplémentaire pour chaque ligne qu'il me faut...

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Regardez mieux et surtout testez.


    Sinon il faut déjà que vous regroupiez vos requête, ensuite le roll-up ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT nom_operateur, Date, 
    count(*) as nb_essai,
    sum(case when resultat_essai IS NOT NULL then 1 else 0 end)
    FROM matable 
    GROUP BY nom_operateur, Date
    La suite vous devriez trouver.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Regardez mieux et surtout testez.


    Sinon il faut déjà que vous regroupiez vos requête, ensuite le roll-up ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT nom_operateur, Date, 
    count(*) as nb_essai,
    sum(case when resultat_essai IS NOT NULL then 1 else 0 end)
    FROM matable 
    GROUP BY nom_operateur, Date
    La suite vous devriez trouver.
    Pas besoin du rollup avec le case...end

    Merci!!

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

Discussions similaires

  1. Ajouter par une requête un nouvel enregistrement vide
    Par Thomzz dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/06/2006, 18h45
  2. Réponses: 2
    Dernier message: 10/02/2006, 15h46
  3. [SQL] Valeur retournée par une requête...
    Par Empty_body dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/01/2006, 23h13
  4. colonne définie par une requête imbriquée
    Par lper dans le forum Langage SQL
    Réponses: 10
    Dernier message: 02/09/2005, 17h41
  5. Récuparation des années par une requête
    Par 973thom dans le forum Access
    Réponses: 3
    Dernier message: 14/06/2005, 19h33

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