[mySQL] petits calculs

petits calculs [mySQL] - SQL/NoSQL - Programmation

Marsh Posté le 29-08-2003 à 13:49:18    

voila, j'ai une table qui contient des horaires d'emploi du temps, et je voudrais profiter de mysql pour faire les calculs propement avec les requetes plutot que par php, même si je sais faire en php
 
 
j'ai donc
 

mysql> select nom,arrivee,depart from planning_vendeur where nom!='--';
+--------+----------+----------+
| nom    | arrivee  | depart   |
+--------+----------+----------+
| jeremy | 11:00:00 | 20:30:00 |
| jeremy | 11:00:00 | 20:30:00 |
| loic   | 11:00:00 | 20:30:00 |
+--------+----------+----------+
3 rows in set (0.00 sec)


 
je souhaite donc calculer la durée de travail pour chaque vendeur en fesant somme des heures travaillées chaque jour (evidemment la y'a pas tout)
 
 
j'arrive a le faire pour un vendeur, mais est-ce possible de le faire pour tous, en une requete sans faire 1 requete séparée pour  chaqu evendeur  ?
 
fo utiliser la clause group je pense, mais j'ai pas encore tout compris de son fonctionnement
 

mysql> select sec_to_time(sum(time_to_sec(depart)-time_to_sec(arrivee))) as duree from planning_vendeur where nom='jeremy';
+----------+
| duree    |
+----------+
| 19:00:00 |
+----------+
1 row in set (0.00 sec)


Message édité par farib le 29-08-2003 à 13:49:35
Reply

Marsh Posté le 29-08-2003 à 13:49:18   

Reply

Marsh Posté le 30-08-2003 à 01:08:28    


mysql> select sec_to_time(sum(time_to_sec(depart)-time_to_sec(arrivee))) as duree from planning_vendeur group by nom;
+----------+
| duree    |
+----------+
| 19:00:00 |
| 09:30:00 |
+----------+
2 rows in set (0.01 sec)


 
Et pour avoir le nom :

mysql> select nom,sec_to_time(sum(time_to_sec(depart)-time_to_sec(arrivee))) as duree from planning_vendeur group by nom;
+--------+----------+
| nom    | duree    |
+--------+----------+
| jeremy | 19:00:00 |
| loic   | 09:30:00 |
+--------+----------+
2 rows in set (0.00 sec)

Reply

Marsh Posté le 30-08-2003 à 11:08:46    

c'est indispensable de convertir en secondes :??:  
 
SELECT nom, sum(depart-arrivee) as duree
from planning_vendeur
GROUP BY nom;

Reply

Marsh Posté le 30-08-2003 à 23:06:56    

Rien de mieux que la reponse par l'exemple
 
 nom      debut      fin
  j  08:23:00  15:11:00
  j  07:59:00  17:47:00
 r  08:47:00  15:45:00
 
 

Code :
  1. Select nom,sec_to_time(sum(fin-debut)) as duree from time group by nom
  2. nom      duree
  3. j  46:33:20
  4. r  19:23:20


 

Code :
  1. Select nom,sum(fin-debut) as duree from time group by nom
  2. j   167600
  3. r  69800


 

Code :
  1. Select nom,sec_to_time(sum(time_to_sec(fin)-time_to_sec(debut))) as duree from time group by nom
  2. j   16:36:00
  3. r  06:58:00

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed