我正在尝试制作任务调度程序,但遇到了一个不知道该做什么或如何解决的问题:S
我会尽力解释。 给出如下表格:
key | start | end | employee(fk)
1 6:00 8:00 A
2 9:00 11:00 B
3 7:00 9:00 B
4 7:00 11:00 C
我想要找到的是,给定一组N名员工,将给予员工所有重叠的时间范围。这就像得到“和谐”的员工一样。 (或换句话说:获得所有给定员工工作的所有时间范围)
示例:
given {A,B} returns 2 columns 7:00 | 8:00 time range which overlaped by A and B
given {B,C} returns 2 columns 9:00 | 11:00 time range which overlaped by B and C
我一直在思考3天,但仍然不太明白该做什么......有人可以帮助我吗?
答案 0 :(得分:0)
由于您的粒度足够粗糙,您可以采用30分钟的步骤,并检查每个员工是否真的很忙。
您可以保留一组布尔值,每个员工一个布尔值,告诉该员工当前是否忙碌。
然后你采取30分钟的步骤(让我们假设从早上6点开始):
答案 1 :(得分:0)
看看这是否在伪SQL中解决了它(我使用我公司的自制数据库,所以使用我们的SQL语法)。假设表名为“表”:
SELECT T1.employee, T2.employee, T1.start, T2.end
FROM Table T1, Table T2
WHERE T1.key!=T2.key AND T1.employee!=T2.employee
AND T1.start <= T2.end AND T1.start >= T2.start