【发布时间】:2015-06-22 16:48:17
【问题描述】:
我正在尝试从我们的计时应用程序中总结员工的休假时间,如果开始时间和结束时间相同或在 30 分钟内,我需要合并记录。
这是我的数据的样子:
First_Name Start_Date End_Date
EmployeeA 2015-07-23 08:00:00 2015-07-23 16:30:00
EmployeeB 2015-07-23 12:00:00 2015-07-23 08:00:00
EmployeeC 2015-08-20 08:00:00 2015-08-20 10:15:00
EmployeeC 2015-08-20 10:15:00 2015-08-20 12:00:00
EmployeeC 2015-08-20 12:30:00 2015-08-20 16:30:00
EmployeeD 2015-08-22 08:00:00 2015-08-22 10:15:00
EmployeeD 2015-08-22 16:00:00 2015-08-22 16:30:00
在上面的示例中,我希望我的输出如下所示:
First_Name Start_Date End_Date
EmployeeA 2015-07-23 08:00:00 2015-07-23 16:30:00
EmployeeB 2015-07-23 12:00:00 2015-07-23 08:00:00
EmployeeC 2015-08-20 08:00:00 2015-08-20 16:30:00
EmployeeD 2015-08-22 08:00:00 2015-08-22 09:00:00
EmployeeD 2015-08-22 16:00:00 2015-08-22 16:30:00
基本上任何结束时间在 30 分钟内或等于同一员工的另一条记录的开始时间的记录都应将条目分组。
到目前为止,我所拥有的是一个组合记录,如果有时间在 24 小时内,但这将组合我的示例中的记录 EmployeeD,这不是我的意图。
select a.first_name, start_date, max(end_date)
from timeoff
group by unix_timestamp(start_date) DIV 17200, first_name
我认为我需要在按功能分组中同时使用开始时间和结束时间,但在确定如何使用时需要帮助。
感谢您的帮助。
【问题讨论】:
-
听起来你的系统坏了!