我有一个设计的出勤表,这是一般文件
无论何时用户上班,他都必须出勤。 第一出席者将考虑登录,而第二出席者将考虑注销。 每次记录都会与时间一起添加。用户可以进行多次输入(一天内注销登录。像这样
EmpId 81在同一天内两次登录和注销。
现在,我的目标是每天生成员工报告,说明他已经花了多少分钟给公司。我只是知道TIMESTAMPDIFF()
可以提供会议记录,但是我无法理解如何将其应用于表。另外,我想问一下,表格字段是否适合所需的报告,还是需要更改?
另一种策略:我还认为我应该在表中添加分钟列,并且每当用户注销时,我都应该计算分钟并在注销条目中添加该分钟。
以下是用于测试的示例数据:
INSERT INTO `attendancemachinelogin` (`AttendanceMachineLoginId`, `EmpId`, `TimeTrackId`, `AttendanceDateTime`, `RecordAddDateTime`) VALUES
(0, 81, 315079, '2018-8-15 14:8:46', '2018-08-15 14:09:25'),
(0, 81, 315079, '2018-8-15 14:20:38', '2018-08-15 14:21:17'),
(0, 81, 315079, '2018-8-15 14:21:9', '2018-08-15 14:21:47'),
(0, 81, 315079, '2018-8-15 14:28:37', '2018-08-15 14:29:16'),
(0, 81, 315079, '2018-8-15 14:28:58', '2018-08-15 14:29:36'),
(0, 81, 315079, '2018-8-15 14:36:42', '2018-08-15 14:37:21'),
(0, 81, 315079, '2018-8-15 15:36:34', '2018-08-15 15:37:13'),
(0, 81, 315079, '2018-8-15 15:52:39', '2018-08-15 15:53:17'),
(0, 81, 315079, '2018-8-15 16:5:38', '2018-08-15 16:06:17'),
(0, 81, 315079, '2018-8-15 16:6:50', '2018-08-15 16:07:29'),
(0, 81, 315079, '2018-8-15 16:8:49', '2018-08-15 16:09:29'),
(0, 81, 315079, '2018-8-15 16:18:28', '2018-08-15 16:19:08'),
(0, 81, 315079, '2018-8-15 16:20:49', '2018-08-15 16:21:28'),
(0, 81, 315079, '2018-8-15 16:23:18', '2018-08-15 16:23:58'),
(0, 81, 315079, '2018-8-15 16:24:3', '2018-08-15 16:24:42'),
(0, 81, 315079, '2018-8-15 16:24:47', '2018-08-15 16:25:26'),
(0, 81, 315079, '2018-8-15 16:24:58', '2018-08-15 16:25:37'),
(0, 81, 315079, '2018-8-15 16:25:54', '2018-08-15 16:26:33'),
(0, 81, 315079, '2018-8-15 16:56:47', '2018-08-15 16:57:27'),
(0, 101, 417092, '2018-8-15 17:37:53', '2018-08-15 17:38:32'),
(0, 101, 417092, '2018-8-15 18:4:34', '2018-08-15 18:05:14'),
(0, 101, 417092, '2018-8-15 18:7:43', '2018-08-15 18:08:22'),
(0, 81, 315079, '2018-8-15 18:13:15', '2018-08-15 18:13:54'),
(0, 81, 315079, '2018-8-17 10:50:16', '2018-08-17 10:50:54'),
(0, 101, 417092, '2018-8-17 10:51:54', '2018-08-17 10:52:31'),
(0, 4, 413034, '2018-8-17 11:45:16', '2018-08-17 11:45:54'),
(0, 91, 916086, '2018-8-17 11:59:34', '2018-08-17 12:00:12'),
(0, 81, 315079, '2018-8-17 12:0:19', '2018-08-17 12:00:56'),
(0, 81, 315079, '2018-8-17 15:7:41', '2018-08-17 15:08:17'),
(0, 101, 417092, '2018-8-17 15:9:54', '2018-08-17 15:10:32'),
(0, 101, 417092, '2018-8-17 15:10:9', '2018-08-17 15:10:45'),
(0, 101, 417092, '2018-8-17 15:10:23', '2018-08-17 15:10:59'),
(0, 101, 417092, '2018-8-17 15:10:25', '2018-08-17 15:11:02'),
(0, 101, 417092, '2018-8-17 15:11:6', '2018-08-17 15:11:43'),
(0, 101, 417092, '2018-8-17 15:11:15', '2018-08-17 15:11:52'),
(0, 101, 417092, '2018-8-17 15:11:17', '2018-08-17 15:11:54'),
(0, 81, 315079, '2018-8-17 15:11:32', '2018-08-17 15:12:09'),
(0, 81, 315079, '2018-8-17 15:12:32', '2018-08-17 15:13:09'),
(0, 81, 315079, '2018-8-17 15:35:33', '2018-08-17 15:36:10'),
(0, 81, 315079, '2018-8-17 15:41:58', '2018-08-17 15:42:34'),
(0, 81, 315079, '2018-8-17 15:42:17', '2018-08-17 15:42:54'),
(0, 81, 315079, '2018-8-17 16:8:25', '2018-08-17 16:09:01'),
(0, 81, 315079, '2018-8-17 16:8:32', '2018-08-17 16:09:08'),
(0, 101, 417092, '2018-8-17 16:8:53', '2018-08-17 16:09:30'),
(0, 101, 417092, '2018-8-17 16:9:20', '2018-08-17 16:09:57'),
(0, 4, 413034, '2018-8-17 16:10:16', '2018-08-17 16:10:53'),
(0, 36, 413037, '2018-8-17 16:10:46', '2018-08-17 16:11:23'),
(0, 81, 315079, '2018-8-17 16:22:21', '2018-08-17 16:22:58'),
(0, 101, 417092, '2018-8-17 16:22:45', '2018-08-17 16:23:21'),
(0, 4, 413034, '2018-8-17 16:23:12', '2018-08-17 16:23:49'),
(0, 81, 315079, '2018-8-17 16:23:35', '2018-08-17 16:24:12'),
(0, 81, 315079, '2018-8-17 16:44:4', '2018-08-17 16:44:42'),
(0, 101, 417092, '2018-8-17 16:44:22', '2018-08-17 16:44:58'),
(0, 81, 315079, '2018-8-17 17:6:51', '2018-08-17 17:07:28'),
(0, 101, 417092, '2018-8-17 17:7:8', '2018-08-17 17:07:45'),
(0, 4, 413034, '2018-8-17 17:7:52', '2018-08-17 17:08:28'),
(0, 81, 315079, '2018-8-17 17:9:25', '2018-08-17 17:10:02'),
(0, 101, 417092, '2018-8-17 17:9:46', '2018-08-17 17:10:22'),
(0, 4, 413034, '2018-8-17 17:10:6', '2018-08-17 17:10:42'),
(0, 81, 315079, '2018-8-17 17:10:24', '2018-08-17 17:11:01'),
(0, 81, 315079, '2018-8-17 17:10:39', '2018-08-17 17:11:15'),
(0, 101, 417092, '2018-8-17 17:10:47', '2018-08-17 17:11:24'),
(0, 101, 417092, '2018-8-17 17:10:58', '2018-08-17 17:11:35'),
(0, 81, 315079, '2018-8-17 17:11:10', '2018-08-17 17:11:46'),
(0, 101, 417092, '2018-8-17 17:11:31', '2018-08-17 17:12:09'),
(0, 4, 413034, '2018-8-17 17:40:40', '2018-08-17 17:41:18'),
(0, 101, 417092, '2018-8-17 17:41:23', '2018-08-17 17:41:59'),
(0, 36, 413037, '2018-8-17 17:41:37', '2018-08-17 17:42:14'),
(0, 81, 315079, '2018-8-17 17:42:9', '2018-08-17 17:42:45'),
(0, 3, 213020, '2018-8-17 17:47:34', '2018-08-17 17:48:11'),
(0, 81, 315079, '2018-8-17 17:48:16', '2018-08-17 17:48:52'),
(0, 4, 413034, '2018-8-17 17:48:59', '2018-08-17 17:49:36'),
(0, 4, 413034, '2018-8-17 17:49:59', '2018-08-17 17:50:36'),
(0, 36, 413037, '2018-8-17 17:52:36', '2018-08-17 17:53:13'),
(0, 101, 417092, '2018-8-17 17:52:53', '2018-08-17 17:53:29'),
(0, 6, 213016, '2018-8-17 17:53:30', '2018-08-17 17:54:06'),
(0, 81, 315079, '2018-8-17 17:53:44', '2018-08-17 17:54:20'),
(0, 4, 413034, '2018-8-17 17:54:27', '2018-08-17 17:55:03'),
(0, 3, 213020, '2018-8-17 17:54:49', '2018-08-17 17:55:27'),
(0, 4, 413034, '2018-8-17 17:55:23', '2018-08-17 17:56:00'),
(0, 36, 413037, '2018-8-17 17:58:33', '2018-08-17 17:59:10'),
(0, 101, 417092, '2018-8-17 17:58:47', '2018-08-17 17:59:24'),
(0, 102, 517094, '2018-8-17 17:59:4', '2018-08-17 17:59:40'),
(0, 81, 315079, '2018-8-17 17:59:33', '2018-08-17 18:00:09'),
(0, 4, 413034, '2018-8-17 18:0:16', '2018-08-17 18:00:52'),
(0, 3, 213020, '2018-8-17 18:0:40', '2018-08-17 18:01:17'),
(0, 6, 213016, '2018-8-17 18:1:30', '2018-08-17 18:02:06'),
(0, 36, 413037, '2018-8-17 18:26:24', '2018-08-17 18:27:01'),
(0, 101, 417092, '2018-8-17 18:26:38', '2018-08-17 18:27:14'),
(0, 6, 213016, '2018-8-17 18:27:9', '2018-08-17 18:27:45'),
(0, 81, 315079, '2018-8-17 18:27:24', '2018-08-17 18:28:00'),
(0, 102, 517094, '2018-8-17 18:27:38', '2018-08-17 18:28:14'),
(0, 4, 413034, '2018-8-17 18:28:13', '2018-08-17 18:28:49'),
(0, 81, 315079, '2018-8-17 19:36:49', '2018-08-17 19:37:26'),
(0, 101, 417092, '2018-8-17 19:37:17', '2018-08-17 19:37:54'),
(0, 102, 517094, '2018-8-17 19:37:30', '2018-08-17 19:38:07'),
(0, 36, 413037, '2018-8-17 19:38:13', '2018-08-17 19:38:50'),
(0, 4, 413034, '2018-8-17 19:38:54', '2018-08-17 19:39:32'),
(0, 3, 213020, '2018-8-17 19:39:58', '2018-08-17 19:40:35'),
(0, 101, 417092, '2018-8-18 10:21:26', '2018-08-18 10:22:03'),
(0, 81, 315079, '2018-8-18 10:30:23', '2018-08-18 10:31:09'),
(0, 4, 413034, '2018-8-18 10:31:46', '2018-08-18 10:32:27'),
(0, 102, 517094, '2018-8-18 10:32:15', '2018-08-18 10:32:53'),
(0, 6, 213016, '2018-8-18 10:32:44', '2018-08-18 10:33:22'),
(0, 3, 213020, '2018-8-18 10:33:23', '2018-08-18 10:34:03'),
(0, 81, 315079, '2018-8-18 10:42:49', '2018-08-18 10:43:27'),
(0, 101, 417092, '2018-8-18 10:43:25', '2018-08-18 10:44:03'),
(0, 81, 315079, '2018-8-18 10:48:51', '2018-08-18 10:49:30'),
(0, 102, 517094, '2018-8-18 10:49:9', '2018-08-18 10:49:49'),
(0, 81, 315079, '2018-8-18 10:56:46', '2018-08-18 10:57:25'),
(0, 1, 1211003, '2018-8-18 10:57:0', '2018-08-18 10:57:38'),
(0, 4, 413034, '2018-8-18 10:57:51', '2018-08-18 10:58:38'),
(0, 3, 213020, '2018-8-18 10:58:43', '2018-08-18 10:59:26');
答案 0 :(得分:0)
SELECT EmpId, DATE(AttendanceDateTime), SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(RecordAddDateTime, AttendanceDateTime))))
FROM attendancemachinelogin
GROUP BY EmpId, DATE(AttendanceDateTime)
答案 1 :(得分:0)
抱歉,我必须出去,但这是使用行号模拟和mod(%)的部分解决方案
select x.*,y.empid,y.attendancedatetime,y.rn
from
(
select a.* ,
if(a.empid <> @p, @rn:=1,@rn:=@rn+1) rn,
@p:=a.empid p
from `attendancemachinelogin` a
cross join (select@rn:=0,@p:=0) r
order by empid,AttendanceDateTime
) x
left join
(
select a.* ,
if(a.empid <> @p1, @rn1:=1,@rn1:=@rn1+1) rn,
@p1:=a.empid p
from `attendancemachinelogin` a
cross join (select@rn1:=0,@p1:=0) r
order by empid,AttendanceDateTime
) y
on x.empid = y.empid and y.rn = x.rn+1
where x.rn % 2 > 0;
+--------------------------+-------+-------------+---------------------+---------------------+------+------+-------+---------------------+------+
| AttendanceMachineLoginId | EmpId | TimeTrackId | AttendanceDateTime | RecordAddDateTime | rn | p | empid | attendancedatetime | rn |
+--------------------------+-------+-------------+---------------------+---------------------+------+------+-------+---------------------+------+
| 0 | 1 | 1211003 | 2018-08-18 10:57:00 | 2018-08-18 10:57:38 | 1 | 1 | NULL | NULL | NULL |
| 0 | 3 | 213020 | 2018-08-17 17:47:34 | 2018-08-17 17:48:11 | 1 | 3 | 3 | 2018-08-17 17:54:49 | 2 |
| 0 | 3 | 213020 | 2018-08-17 18:00:40 | 2018-08-17 18:01:17 | 3 | 3 | 3 | 2018-08-17 19:39:58 | 4 |
| 0 | 3 | 213020 | 2018-08-18 10:33:23 | 2018-08-18 10:34:03 | 5 | 3 | 3 | 2018-08-18 10:58:43 | 6 |
| 0 | 4 | 413034 | 2018-08-17 11:45:16 | 2018-08-17 11:45:54 | 1 | 4 | 4 | 2018-08-17 16:10:16 | 2 |
| 0 | 4 | 413034 | 2018-08-17 16:23:12 | 2018-08-17 16:23:49 | 3 | 4 | 4 | 2018-08-17 17:07:52 | 4 |
| 0 | 4 | 413034 | 2018-08-17 17:10:06 | 2018-08-17 17:10:42 | 5 | 4 | 4 | 2018-08-17 17:40:40 | 6 |
| 0 | 4 | 413034 | 2018-08-17 17:48:59 | 2018-08-17 17:49:36 | 7 | 4 | 4 | 2018-08-17 17:49:59 | 8 |
| 0 | 4 | 413034 | 2018-08-17 17:54:27 | 2018-08-17 17:55:03 | 9 | 4 | 4 | 2018-08-17 17:55:23 | 10 |
| 0 | 4 | 413034 | 2018-08-17 18:00:16 | 2018-08-17 18:00:52 | 11 | 4 | 4 | 2018-08-17 18:28:13 | 12 |
| 0 | 4 | 413034 | 2018-08-17 19:38:54 | 2018-08-17 19:39:32 | 13 | 4 | 4 | 2018-08-18 10:31:46 | 14 |
| 0 | 4 | 413034 | 2018-08-18 10:57:51 | 2018-08-18 10:58:38 | 15 | 4 | NULL | NULL | NULL |
| 0 | 6 | 213016 | 2018-08-17 17:53:30 | 2018-08-17 17:54:06 | 1 | 6 | 6 | 2018-08-17 18:01:30 | 2 |
| 0 | 6 | 213016 | 2018-08-17 18:27:09 | 2018-08-17 18:27:45 | 3 | 6 | 6 | 2018-08-18 10:32:44 | 4 |
| 0 | 36 | 413037 | 2018-08-17 16:10:46 | 2018-08-17 16:11:23 | 1 | 36 | 36 | 2018-08-17 17:41:37 | 2 |
| 0 | 36 | 413037 | 2018-08-17 17:52:36 | 2018-08-17 17:53:13 | 3 | 36 | 36 | 2018-08-17 17:58:33 | 4 |
| 0 | 36 | 413037 | 2018-08-17 18:26:24 | 2018-08-17 18:27:01 | 5 | 36 | 36 | 2018-08-17 19:38:13 | 6 |
| 0 | 81 | 315079 | 2018-08-15 14:08:46 | 2018-08-15 14:09:25 | 1 | 81 | 81 | 2018-08-15 14:20:38 | 2 |
| 0 | 81 | 315079 | 2018-08-15 14:21:09 | 2018-08-15 14:21:47 | 3 | 81 | 81 | 2018-08-15 14:28:37 | 4 |
| 0 | 81 | 315079 | 2018-08-15 14:28:58 | 2018-08-15 14:29:36 | 5 | 81 | 81 | 2018-08-15 14:36:42 | 6 |
| 0 | 81 | 315079 | 2018-08-15 15:36:34 | 2018-08-15 15:37:13 | 7 | 81 | 81 | 2018-08-15 15:52:39 | 8 |
| 0 | 81 | 315079 | 2018-08-15 16:05:38 | 2018-08-15 16:06:17 | 9 | 81 | 81 | 2018-08-15 16:06:50 | 10 |
| 0 | 81 | 315079 | 2018-08-15 16:08:49 | 2018-08-15 16:09:29 | 11 | 81 | 81 | 2018-08-15 16:18:28 | 12 |
| 0 | 81 | 315079 | 2018-08-15 16:20:49 | 2018-08-15 16:21:28 | 13 | 81 | 81 | 2018-08-15 16:23:18 | 14 |
| 0 | 81 | 315079 | 2018-08-15 16:24:03 | 2018-08-15 16:24:42 | 15 | 81 | 81 | 2018-08-15 16:24:47 | 16 |
| 0 | 81 | 315079 | 2018-08-15 16:24:58 | 2018-08-15 16:25:37 | 17 | 81 | 81 | 2018-08-15 16:25:54 | 18 |
| 0 | 81 | 315079 | 2018-08-15 16:56:47 | 2018-08-15 16:57:27 | 19 | 81 | 81 | 2018-08-15 18:13:15 | 20 |
| 0 | 81 | 315079 | 2018-08-17 10:50:16 | 2018-08-17 10:50:54 | 21 | 81 | 81 | 2018-08-17 12:00:19 | 22 |
| 0 | 81 | 315079 | 2018-08-17 15:07:41 | 2018-08-17 15:08:17 | 23 | 81 | 81 | 2018-08-17 15:11:32 | 24 |
| 0 | 81 | 315079 | 2018-08-17 15:12:32 | 2018-08-17 15:13:09 | 25 | 81 | 81 | 2018-08-17 15:35:33 | 26 |
| 0 | 81 | 315079 | 2018-08-17 15:41:58 | 2018-08-17 15:42:34 | 27 | 81 | 81 | 2018-08-17 15:42:17 | 28 |
| 0 | 81 | 315079 | 2018-08-17 16:08:25 | 2018-08-17 16:09:01 | 29 | 81 | 81 | 2018-08-17 16:08:32 | 30 |
| 0 | 81 | 315079 | 2018-08-17 16:22:21 | 2018-08-17 16:22:58 | 31 | 81 | 81 | 2018-08-17 16:23:35 | 32 |
| 0 | 81 | 315079 | 2018-08-17 16:44:04 | 2018-08-17 16:44:42 | 33 | 81 | 81 | 2018-08-17 17:06:51 | 34 |
| 0 | 81 | 315079 | 2018-08-17 17:09:25 | 2018-08-17 17:10:02 | 35 | 81 | 81 | 2018-08-17 17:10:24 | 36 |
| 0 | 81 | 315079 | 2018-08-17 17:10:39 | 2018-08-17 17:11:15 | 37 | 81 | 81 | 2018-08-17 17:11:10 | 38 |
| 0 | 81 | 315079 | 2018-08-17 17:42:09 | 2018-08-17 17:42:45 | 39 | 81 | 81 | 2018-08-17 17:48:16 | 40 |
| 0 | 81 | 315079 | 2018-08-17 17:53:44 | 2018-08-17 17:54:20 | 41 | 81 | 81 | 2018-08-17 17:59:33 | 42 |
| 0 | 81 | 315079 | 2018-08-17 18:27:24 | 2018-08-17 18:28:00 | 43 | 81 | 81 | 2018-08-17 19:36:49 | 44 |
| 0 | 81 | 315079 | 2018-08-18 10:30:23 | 2018-08-18 10:31:09 | 45 | 81 | 81 | 2018-08-18 10:42:49 | 46 |
| 0 | 81 | 315079 | 2018-08-18 10:48:51 | 2018-08-18 10:49:30 | 47 | 81 | 81 | 2018-08-18 10:56:46 | 48 |
| 0 | 91 | 916086 | 2018-08-17 11:59:34 | 2018-08-17 12:00:12 | 1 | 91 | NULL | NULL | NULL |
| 0 | 101 | 417092 | 2018-08-15 17:37:53 | 2018-08-15 17:38:32 | 1 | 101 | 101 | 2018-08-15 18:04:34 | 2 |
| 0 | 101 | 417092 | 2018-08-15 18:07:43 | 2018-08-15 18:08:22 | 3 | 101 | 101 | 2018-08-17 10:51:54 | 4 |
| 0 | 101 | 417092 | 2018-08-17 15:09:54 | 2018-08-17 15:10:32 | 5 | 101 | 101 | 2018-08-17 15:10:09 | 6 |
| 0 | 101 | 417092 | 2018-08-17 15:10:23 | 2018-08-17 15:10:59 | 7 | 101 | 101 | 2018-08-17 15:10:25 | 8 |
| 0 | 101 | 417092 | 2018-08-17 15:11:06 | 2018-08-17 15:11:43 | 9 | 101 | 101 | 2018-08-17 15:11:15 | 10 |
| 0 | 101 | 417092 | 2018-08-17 15:11:17 | 2018-08-17 15:11:54 | 11 | 101 | 101 | 2018-08-17 16:08:53 | 12 |
| 0 | 101 | 417092 | 2018-08-17 16:09:20 | 2018-08-17 16:09:57 | 13 | 101 | 101 | 2018-08-17 16:22:45 | 14 |
| 0 | 101 | 417092 | 2018-08-17 16:44:22 | 2018-08-17 16:44:58 | 15 | 101 | 101 | 2018-08-17 17:07:08 | 16 |
| 0 | 101 | 417092 | 2018-08-17 17:09:46 | 2018-08-17 17:10:22 | 17 | 101 | 101 | 2018-08-17 17:10:47 | 18 |
| 0 | 101 | 417092 | 2018-08-17 17:10:58 | 2018-08-17 17:11:35 | 19 | 101 | 101 | 2018-08-17 17:11:31 | 20 |
| 0 | 101 | 417092 | 2018-08-17 17:41:23 | 2018-08-17 17:41:59 | 21 | 101 | 101 | 2018-08-17 17:52:53 | 22 |
| 0 | 101 | 417092 | 2018-08-17 17:58:47 | 2018-08-17 17:59:24 | 23 | 101 | 101 | 2018-08-17 18:26:38 | 24 |
| 0 | 101 | 417092 | 2018-08-17 19:37:17 | 2018-08-17 19:37:54 | 25 | 101 | 101 | 2018-08-18 10:21:26 | 26 |
| 0 | 101 | 417092 | 2018-08-18 10:43:25 | 2018-08-18 10:44:03 | 27 | 101 | NULL | NULL | NULL |
| 0 | 102 | 517094 | 2018-08-17 17:59:04 | 2018-08-17 17:59:40 | 1 | 102 | 102 | 2018-08-17 18:27:38 | 2 |
| 0 | 102 | 517094 | 2018-08-17 19:37:30 | 2018-08-17 19:38:07 | 3 | 102 | 102 | 2018-08-18 10:32:15 | 4 |
| 0 | 102 | 517094 | 2018-08-18 10:49:09 | 2018-08-18 10:49:49 | 5 | 102 | NULL | NULL | NULL |
+--------------------------+-------+-------------+---------------------+---------------------+------+------+-------+---------------------+------+
59 rows in set (0.00 sec)