労働時間を管理するソフトウェアを作成しています。毎日のために異なる活動ができます。 私は過去7日間に各労働者の労働時間を抽出したいと考えています。グループ単位で合計労働時間を計算する
サンプル行
+----+------------+-------+----------+----------+
| id | date | order | operator | duration |
+----+------------+-------+----------+----------+
| 37 | 2016-06-12 | 27 | 1 | 180 |
| 38 | 2016-06-12 | 28 | 3 | 390 |
| 39 | 2016-06-12 | 27 | 1 | 480 |
| 40 | 2016-06-04 | 21 | 2 | 120 |
| 41 | 2016-05-07 | 27 | 1 | 90 |
| 42 | 2016-06-07 | 27 | 1 | 150 |
+----+------------+-------+----------+----------+
クエリ
SELECT SUM(`duration`) as `hours_per_day`
FROM `sheets`
WHERE `operator` = 1 AND `date` = DATE_ADD(CURDATE(), INTERVAL -7 DAY)
ORDER BY `date` DESC
期待される結果:
+------------------------+--------+--------+--------+--------+--------+--------+--------+
| Operator: Avareage Joe |
+------------------------+--------+--------+--------+--------+--------+--------+--------+
| Day: | 01 jul | 02 jul | 03 jul | O4 jul | 05 jul | 06 jul | 07 jul |
| Hours: | 8 | 7 | 9 | 8 | 9 | 8 | 6 |
+------------------------+--------+--------+--------+--------+--------+--------+--------+
ティsでは、通常のSQLまたは動的SQLを使用した大きな(そして醜い)ピボット・クエリが必要になり、過去7日間のうちの1つ以上のデータがないオペレータの問題があります。そのためには、カレンダーテーブルを使用することができます。 –