当前位置: 首页 > 科技观察

SQL中的时间重叠问题

时间:2023-03-11 21:54:32 科技观察

问题描述时间重叠是指上下两行数据的时间段重叠。现在我们需要找到这些在时间上重叠的记录。具体问题是有7个会议室,每个会议室每天都有人开会。某天的会议时间如下:查看哪些会议室的会议时间重叠?以上预期结果为ID23456问题分析。为了分析方便,我们画了下面的草图来详细描述一下。图中,上部t和下部b有一段是重复的,即b.starttime到t.endtime。通过数学集合的思想,我们可以得到这个重叠部分的集合关系。t.starttime<=b.endtimeANDt.endtime>=b.starttime上面数学集合的重叠部分就是我们要找的。具体解决方案--创建测试数据WITHMeetingAS(SELECT1ID,'08:00'Starttime,'09:15'EndtimeUNIONALLSELECT2,'13:20','15:20'UNIONALLSELECT3,'10:00','14:00'UNIONALLSELECT4,'13:55','16:25'UNIONALLSELECT5,'14:00','17:45'UNIONALLSELECT6,'14:05','17:45'UNIONALLSELECT7,'18:05','19:45')--查询码SELECTDISTINCTb.*FROMMeetingtJOINMeetingbONt.Starttime<=b.EndtimeANDt.Endtime>=b.StarttimeANDb.ID<>t.ID--排除等于自己时间的值结果如下:感兴趣的朋友能做就做吧,说不定下次面试就会遇到。