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 :

Calcul de la durée moyenne des valeurs entrées dans une colonne


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut Calcul de la durée moyenne des valeurs entrées dans une colonne
    Salut à tous.
    J'ai vraiment besoin de votre aide.
    je suis bloqué depuis quelques heurs sur une requête de calcul de la durée moyenne des programmes saisis.

    j'ai une table programme qui a les champs suivants :
    - datejour (la date du jour);
    - nomprogram (le nom du programme);
    - heuredebut (heure de début de l’exécution);
    - heurefin (heure de fin d’exécution);
    - duree (la durée d’exécution du programme).

    Chaque jour les mêmes programmes sont exécutions mais avec la date du jour différente.

    je veux calculer la durée moyenne de chaque programme en fonction de la période que l'utilisateur aura choisie de sorte :

    pour la période 01/07/2013 - 31/07/2013

    - program1 : 00h00;
    - program2 : 00h00;
    - program3 : 00h00;
    - program4 : 00h00;


    je sais pas si je me fais bien comprendre.

    Merci pour vos reponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quelle requête as-tu écrite ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Merci sabotage pour ta réponse

    Ma requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT datejour,nomprogram, AVG( duree ) AS Moyenne
    FROM  program_compta 
    GROUP BY nomprogram
    HAVING datejour
    BETWEEN  '2013/07/01'
    AND  '2013/07/31'
    AND nomprogram = 'agios'
    LIMIT 0 , 30
    Mais là je ne veux pas afficher la date du jour dans le sélect
    et je veux qu'il me renvoie le résultat de plusieurs programmes
    sans toute fois spécifier un seul nom de programme

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    La solution a été trouvée.

    Dans la requête lorsque je ne spécifie pas le nom du programme, il me renvoie la moyenne de tous les programme dans table en fonction de la date d jour :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT datejour,nomprogram, AVG( duree ) AS Moyenne
    FROM  program_compta 
    GROUP BY nomprogram
    HAVING datejour
    BETWEEN  '2013/07/01'
    AND  '2013/07/31'
    LIMIT 0 , 30

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    la condition sur la date du jour doit se situer dans la clause where et non dans la clause having.

    Ensuite vu que la colonne "nom_programme" n'est pas dans la clause group by ni entourrer d'une fonction de fenetrage, la valeur renvoyé sera arbitraire

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Merci punkoff pour ta réponse, mais quelle requête me proposes-tu ?

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Requète revue :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT datejour,nomprogram, SEC_TO_TIME(AVG(duree)) AS Moyenne
    FROM  program_compta 
    WHERE datejour
    BETWEEN  '2013/07/01'
    AND  '2013/07/31'
    GROUP BY nomprogram
    LIMIT 0 , 30

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Je constate le problème :

    mes champs heuredebut et heurefin possèdent les valeurs 19:20:00 23:10:00 et le champs duree 03:50:00.

    lorsque j’exécute la requête
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT datejour,nomprogram, SEC_TO_TIME(AVG(duree)) AS Moyenne
    FROM  program_compta 
    WHERE datejour
    BETWEEN  '2013/07/01'
    AND  '2013/07/31'
    GROUP BY nomprogram
    LIMIT 0 , 30
    je constate que SEC_TO_TIME(AVG(duree)) me renvoie 09:43:20 ce qui est vraiment anormale.

    vu que j'ai un seul enregistrement dans la table la moyenne (avg(duree)) devrait être 03:50:00

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 119
    Points : 77
    Points
    77
    Par défaut
    Le problème vient d'être résolu. Ci-dessous la requête

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT datejour,nomprogram, SEC_TO_TIME(avg(( HOUR( duree ) *3600 ) + ( MINUTE( duree ) *60 ) + SECOND( duree ))) AS Moyenne
    FROM  program_compta 
    GROUP BY nomprogram
    HAVING datejour
    BETWEEN  '2013/08/01'
    AND  '2013/08/31'
    LIMIT 0 , 30

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

Discussions similaires

  1. insertion des valeurs checkbox dans une colonne
    Par ronze dans le forum Langage
    Réponses: 0
    Dernier message: 23/06/2011, 16h33
  2. Ramener des valeurs entrées dans la requête
    Par dessinateurttuyen dans le forum SQL
    Réponses: 8
    Dernier message: 01/06/2011, 10h08
  3. Réponses: 3
    Dernier message: 26/10/2010, 22h14
  4. Liste des valeurs contenue dans une colonne
    Par TimDe dans le forum Excel
    Réponses: 5
    Dernier message: 15/08/2008, 17h11
  5. Réponses: 2
    Dernier message: 26/02/2008, 20h16

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