이 쿼리 시도 - 당신은 그들이 모든 시계에 대한 클럭 아웃이 있는지 확인하려면 어떻게
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 |
+-------+---------------+---------------------+-----------+
를? –
확인하지 않습니다. 그들이 클럭 아웃하지 않았다면 그 기록은 보여주지 않을 것입니다. –
글쎄, 행을 프로젝트와 일치하는 이전 행과 상관시킨 다음 날짜 함수를 사용하여 차이를 얻을 수 있습니다. 그러나 내 두려움은 (데이터가 없다면) 잠재적으로 일을 시간의 흐름으로 보게 될 것입니다. 또한, 하나의 시계를 놓쳤다가 나중에 미래의 엔트리를 뒤집을 것입니다. (이후에는 out에서 out으로 바꾼다) –