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 :

Requête qui retourne la somme totale de durées


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut Requête qui retourne la somme totale de durées
    Bonjour,

    j'ai une table qui enregistre, pour un salarie, pour une date, une heure de debut et une heure de fin d'une tache.
    id_salarie,
    id_tache,
    laDate,
    heure_debut,
    heure_fin;

    Je souhaiterai retourner la somme des durees de toutes les taches d'une annee: par exemple, en tout un salarie a passer 95 heures a la conception pendant l'annee 2007.

    J'ai testé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT addtime( TIMEDIFF( heure_fin, heure_debut ) ) 
    FROM travailler
    WHERE laDate BETWEEN '2007-01-01' AND '2007-12-31'
      AND id_salarie = '10'
      AND id_tache = '2'
    GROUP BY id_salarie
    mais ça marche pas...

    Auriez vous une idée ou est-ce que c'est impossible à faire?

    Merci beaucoup!

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    ADDTIME n'est pas une fonction d'aggrégation (elle ne marche pas avec le GROUP BY), et TIMEDIFF renvoie un TIME, qui n'est pas additionnable.

    Tu dois convertir tes TIMEDIFF en secondes avec TIME_TO_SEC, et ensuite les aggréger avec SUM. Tu peux ensuite repasser en heures en divisant par 3600 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT SUM( TIME_TO_SEC(TIMEDIFF( heure_fin, heure_debut ) ) ) / 3600
    FROM travailler
    WHERE laDate BETWEEN '2007-01-01' AND '2007-12-31'
      AND id_salarie = '10'
      AND id_tache = '2'
    GROUP BY id_salarie

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Absolument, merveilleusement et divinement parfait !
    Que cette nouvelle année te prodigue joie et bonheur!

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Au passage, 3.5 veut dire 3 heure et demi, donc 3h30 et non 3h50...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/07/2018, 13h18
  2. [MySQL] Optimiser le temps de traitement d'une simple requête qui retourne 800 000 lignes.
    Par kamnouz dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/06/2011, 18h37
  3. requète qui retourne la derniere ligne d'un ensemble de tuple
    Par Stouille33 dans le forum Développement
    Réponses: 4
    Dernier message: 14/11/2008, 09h15
  4. Réponses: 16
    Dernier message: 04/09/2006, 10h27
  5. Requête qui fait une somme par ligne
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/08/2006, 08h30

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