【发布时间】:2018-05-14 05:37:35
【问题描述】:
我有一个表,其中包含不同行中员工的访问控制、办公室出入口的数据。
输出基于日期和时间范围示例中的查询
ac_date >= '2018-05-12' AND ac_date <= '2018-05-13' AND ac_time >='08:00:00' AND ac_time <= '13:00:00']
表 AC
CREATE TABLE `AC` (
`employee` int(11) NOT NULL,
`ac_date` date NOT NULL,
`ac_time` time NOT NULL,
`ac_event` tinyint(4) NOT NULL,
KEY `index2` (`employee`,`ac_date`,`ac_time`,`ac_event`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Employee ac_date ac_time ac_event
2032 2018-05-12 08:52:00 1
2032 2018-05-12 11:39:33 0
2032 2018-05-12 11:48:06 1
2032 2018-05-12 11:52:54 0
2032 2018-05-12 11:59:54 1
2032 2018-05-12 12:23:40 0
2032 2018-05-13 08:34:43 1
2032 2018-05-13 09:02:25 0
2032 2018-05-13 09:12:16 1
2032 2018-05-13 11:45:21 0
2032 2018-05-13 12:50:40 1
2032 2018-05-13 12:52:16 0
其中 ac_ event = 1 是输入,ac event = 0 是输出。
我需要进行一个查询,在同一行(进入/退出)中显示数据,然后计算员工离开办公室的时间。 乙:
第一个块的输出:
Employee entry_date exit_date entry_date exit_date duration
2032 2018-05-12 2018-05-12 08:52:00 11:39:33 02:47:33
我能够通过对同一张表进行查询来获得结果,但是我有重复的数据,所以我必须求助于 [ac_date, ac_time] 组。我不知道我尝试的方式是否正确,所以我想看看专家的解决方案。谢谢!
更新:
http://sqlfiddle.com/#!9/6f36f/3
【问题讨论】:
-
请添加您已经写好的查询
-
您想如何处理第 3、4、5 和 6 行,因为它们属于同一员工且在同一日期?我的查询将考虑员工一天的首次登录和最后一次注销,并计算时间差。即每位员工每天一行