2010-06-21 25 views
1

Je suis ici pour écrire une instruction SQL pour trouver le résumé hebdomadaire d'une table. J'avais une table avec les champs suivants:Recherche d'un résumé hebdomadaire à partir d'une table

UIN, Date, Staff, work_hours 

Maintenant, je voudrais recueillir de l'information combien d'heures a un personnel travaillé dans une semaine.

Répondre

4

Il est difficile de dire de votre question, mais si vous cherchez le nombre total d'heures en une semaine par chaque employé, procédez comme suit:

SELECT Staff, SUM(work_hours) 
FROM YourTable 
WHERE Date BETWEEN week_start_day AND week_end_day 
GROUP BY Staff 

Sinon, si vous cherchez un plein rapport, résumé par semaine, vous pouvez essayer ce qui suit, qui vous donnera des heures hebdomadaires de chaque membre du personnel, regroupées par semaine:

SELECT YEAR(Date), WEEK(Date), Staff, SUM(work_hours) 
FROM YourTable 
GROUP BY YEAR(Date), WEEK(Date), Staff 
ORDER BY YEAR(Date), WEEK(Date) 
+0

thnx ... le second est celui que je cherchais ... – KoolKabin

3

vous voudrez peut-être essayer quelque chose comme ce qui suit:

SELECT staff, 
      WEEK(date) week_no, 
      SUM(work_hours) as work_hours_sum 
FROM  log 
GROUP BY staff, WEEK(date) 
ORDER BY WEEK(date), staff; 

cas de test (MySQL):

CREATE TABLE log (
    uin int auto_increment primary key, 
    date date, 
    staff int, 
    work_hours int 
); 

INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-01', 1, 5); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-01', 2, 7); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-02', 1, 2); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-02', 2, 1); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-08', 1, 2); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-08', 2, 5); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-09', 1, 6); 
INSERT INTO log (date, staff, work_hours) VALUES ('2010-06-09', 2, 5); 

Résultat:

+-------+---------+----------------+ 
| staff | week_no | work_hours_sum | 
+-------+---------+----------------+ 
|  1 |  22 |    7 | 
|  2 |  22 |    8 | 
|  1 |  23 |    8 | 
|  2 |  23 |    10 | 
+-------+---------+----------------+ 
4 rows in set (0.00 sec) 
+0

thnx ... vous êtes même corret daniel. merci d'aider – KoolKabin