假设存在以下记录:
Employee_id, work_start_date, work_end_date
1, 01-jan-2014, 07-jan-2014
1, 03-jan-2014, 12-jan-2014
1, 23-jan-2014, 25-jan-2014
2, 15-jan-2014, 25-jan-2014
2, 07-jan-2014, 15-jan-2014
2, 09-jan-2014, 12-jan-2014
要求编写一个SQL查询语句,按employee_id分组汇总工作日,但排除重叠期间(即仅计算一次)。
所需输出如下:
Employee_id, worked_days
1, 13
2, 18
计算日期范围内的工作日是这样做的: 如果开始工作日期是5,结束工作日期是9,则工作日为4(9-5)。
我可以编写一个PL / SQL函数来手动迭代记录并进行计算,但我相信可以使用SQL以获得更好的性能。
有人可以指点一下我吗?
谢谢!