私は、テーブルから週ごとの要約を見つけるためのSQLステートメントを作成するためにここにいます。次のフィールドを持つテーブルがありました。
UIN, Date, Staff, work_hours
ここで、スタッフが1週間に何時間働いたかについての情報を収集したいと思います。
私は、テーブルから週ごとの要約を見つけるためのSQLステートメントを作成するためにここにいます。次のフィールドを持つテーブルがありました。
UIN, Date, Staff, work_hours
ここで、スタッフが1週間に何時間働いたかについての情報を収集したいと思います。
あなたの質問からはわかりにくいですが、各従業員の 1 週間の合計時間を探している場合は、次のことを試してください。
SELECT Staff, SUM(work_hours)
FROM YourTable
WHERE Date BETWEEN week_start_day AND week_end_day
GROUP BY Staff
それ以外の場合は、週ごとに要約された完全なレポートを探している場合は、次の方法を試すことができます。これにより、各スタッフの週ごとの勤務時間が週ごとに集計されます。
SELECT YEAR(Date), WEEK(Date), Staff, SUM(work_hours)
FROM YourTable
GROUP BY YEAR(Date), WEEK(Date), Staff
ORDER BY YEAR(Date), WEEK(Date)
次のようなことを試してみてください。
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;
テスト ケース (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);
結果:
+-------+---------+----------------+
| 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)