私はさまざまなタスクに「クロックイン」できる非常に単純なアプリケーションを構築しています。このために、MySQL に次のようなデータベーステーブルがあります。
|ID|user_id |task_id|checkin_time |checkout_time
------------------------------------------------------------
|31|2 |289 |2012-07-12 09:50:03|2012-07-12 09:51:27
|32|2 |289 |2012-07-12 10:00:05|2012-07-12 13:00:05
SQL クエリを使用してこれから取得したいのは、ユーザーが先週チェックインした 1 日あたりの合計時間です。私はこのクエリを試しました:
SELECT COUNT( id ) AS time_id, SUM( checkout_time - checkin_time ) AS total_time, DATE( checkout_time ) AS checkout_day
FROM time_table
WHERE user_id = '2'
AND checkout_time >= ( DATE_SUB( CURDATE( ) , INTERVAL 1 WEEK ) )
GROUP BY checkout_day
ORDER BY checkout_day ASC
これは非常に良い結果をもたらしますが、1 日に複数の「チェックイン」がある場合SUM( checkout_time - checkin_time )
(最初の checkin_time と最後の checkout_time のように) は、ユーザーがチェックインされた時間を必ずしも表しているとは限りません。 (彼が100%の時間でチェックされていない限り).
私が欲しいのは、SUM() が各合計を取り、それらを毎日加算することです。
これを修正する方法についてのアイデアはありますか?