は、この文字列で検索してください -
CREATE TABLE table_proj (
empid INT(11) DEFAULT NULL,
projectnumber INT(11) DEFAULT NULL,
clocktime DATETIME DEFAULT NULL
);
INSERT INTO table_proj VALUES
(1, 1, '2011-09-27 10:02:22'),
(1, 1, '2011-09-27 11:17:32'),
(2, 2, '2011-09-27 11:34:13'),
(3, 3, '2011-09-27 11:01:21'),
(3, 3, '2011-09-27 13:36:28'),
(2, 2, '2011-09-27 13:55:39'),
(4, 4, '2011-09-27 14:25:07');
SELECT
empid, projectnumber, MIN(clocktime) startdate, TIMEDIFF(MAX(clocktime), MIN(clocktime)) workhours
FROM
table_proj
GROUP BY
empid, projectnumber
HAVING
COUNT(*) = 2;
+-------+---------------+---------------------+-----------+
| empid | projectnumber | startdate | workhours |
+-------+---------------+---------------------+-----------+
| 1 | 1 | 2011-09-27 10:02:22 | 01:15:10 |
| 2 | 2 | 2011-09-27 11:34:13 | 02:21:26 |
| 3 | 3 | 2011-09-27 11:01:21 | 02:35:07 |
+-------+---------------+---------------------+-----------+
あなたはどのように彼らはすべてのクロックでのクロック・アウトを持っていることを確認しますか。 –
私は確認していません。彼らがクロックアウトしていない場合、レコードは表示されません。 –
さて、プロジェクトと一致する前の行と行を関連付けることができます。次に、日付関数を使用して差分を取得します。しかし、私の恐れは、データが欠けていると、(潜在的に)物事が時間のためにその日に入るのを見ることになります。また、1つのクロックが入っていない/今後のエントリを取り消してしまいます(そのあとで、outからinに切り替えることになります) –