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

PL/SQL Oracle Discussion :

Conversion heure/minute puis moyenne (AVG)


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut Conversion heure/minute puis moyenne (AVG)
    Bonjour,
    Le titre n'étant pas très clair, voici mon problème :
    Je récupére, en gros, un temps de resolution de problème exprimé en heure:minute:seconde comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    users | resolution_time
    ----------------------
    user1 | 9:56:32
    user2 | 19:21:00
    user3 | 458:07:00
    ...
    => le user1 a passé 9heures 56 minutes sur le problème.

    Je voudrais effectuer une moyenne avec AVG(resolution_time) (si possible) mais AVG(resolution_time) ne prend pas ces chiffres (erreur ora-00937 : invalid number) normal car ce n'est pas un entier..

    Comment pourrais-je me débrouiller pour convertir ces données en données pouvant être 'moyennées' ?

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Si vous pouvez convertir ces durées en jours, vous pourriez utiliser le Select suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TO_DATE(TRUNC(AVG( TO_CHAR(la_date,'J'))),'J') FROM la_table

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Merci pour votre réponse.

    Je suis en train de tout convertir en secondes en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
               SUBSTR('44:55:32', 1 ,INSTR('44:55:32', ':', 1, 1)-1)  as heures,
                SUBSTR('44:55:32', INSTR('44:55:32',':', 1, 1)+1, INSTR('44:55:32',':',1,2)-INSTR('44:55:32',':',1,1)-1)  as minutes,
                SUBSTR('44:55:32', INSTR('44:55:32',':', 1, 2)+1) as secondes
    FROM dual;
    J'ai donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    heures | minutes | secondes
    ----------------------------
    44         55       32
    Ce qui fonctionne bien.
    En multipliant :
    heures * 3600 = 44*3600 = 158400
    minutes * 60 = 55*60 = 3300
    seconde = 32

    Mon problème intermédiaire est qu'il faudrait que je : SUM(heures, minutes, secondes) mais je ne sais pas comment faire :/

    Ensuite je pense que ton SELECT marcherai ?..

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Je doute que les secondes aient un impact réel. Si vous transformez tout en minutes, vous pourrez utiliser la fonction AVG() et ensuite retranscrire le résultat en Jours/Heures/minutes.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Bonjour.
    Si on continue votre logique, vous convertissez tout en seconde sans problème.
    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
    SELECT TO_CHAR (FLOOR (moyenne_en_secondes / 3600)) AS heures,
           TO_CHAR (MOD (moyenne_en_secondes - MOD (moyenne_en_secondes, 60), 3600) / 60
                   ) AS minutes,
           TO_CHAR (MOD (moyenne_en_secondes, 60)) AS secondes
      FROM (SELECT AVG (    TO_NUMBER (SUBSTR ('44:55:32', 1,
                                               INSTR ('44:55:32', ':', 1, 1) - 1)
                                      ) * 3600
                        +   TO_NUMBER (SUBSTR ('44:55:32',
                                               INSTR ('44:55:32', ':', 1, 1) + 1,
                                                 INSTR ('44:55:32', ':', 1, 2)
                                               - INSTR ('44:55:32', ':', 1, 1)
                                               - 1 )) * 60
                        + SUBSTR ('44:55:32', INSTR ('44:55:32', ':', 1, 2) + 1)
                       ) AS moyenne_en_secondes
              FROM dual);
    Vous mettez votre table à la place de "dual" et c'est bon.
    Mais je pense qu'il y a plus simple.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Merci pour votre aide !
    Cela fonctionne bien, et effet il doit y avoir plus simple, je vais plutot traiter la moyenne avec PHP du coup.
    Mais j'ai appris des choses avec cet exemple =)

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

Discussions similaires

  1. Formule conversion heures minutes en décimales
    Par futurist dans le forum Formules
    Réponses: 1
    Dernier message: 29/11/2012, 16h30
  2. [Débutant] Conversion Heure-Minute-Seconde en Secondes
    Par neufrdb dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 02/03/2011, 13h12
  3. Conversion heure/minute puis moyenne (AVG)
    Par magdales dans le forum Développement
    Réponses: 3
    Dernier message: 07/02/2011, 07h37
  4. Conversion Heure Minute Seconde
    Par TiBijou dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 05/01/2010, 14h28
  5. Conversion heures minutes en heures centièmes
    Par shaman262 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/10/2005, 17h53

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