我对课题组会议出席,其中一排是出席在给定日期/时间会话一个用户的数据。团体提供可以具有一定数量的会话,例如, 10,他们通常在同一时间(StartTime)和星期几(DayOfWeek)提供。MSSQL:从会议考勤数据找出同类群组
我想,以确定该组产品的开始和结束日期,即第一届和给定队列的最后一次会议。队列将从参加小组会议的相同用户列表中确定。
Table: ---GroupSessions--- GroupSessionDate UserID Topic StartTime DayOfWeek ArrivalStatus Jan-08-2015 1 A 11:30:00 AM Thursday Arrived Jan-08-2015 2 A 11:30:00 AM Thursday Arrived Jan-08-2015 3 A 11:30:00 AM Thursday Arrived Jan-08-2015 4 A 11:30:00 AM Thursday Arrived Jan-15-2015 1 A 11:30:00 AM Thursday Arrived Jan-15-2015 2 A 11:30:00 AM Thursday Arrived Jan-15-2015 3 A 11:30:00 AM Thursday Arrived Jan-15-2015 4 A 11:30:00 AM Thursday Arrived Jan-22-2015 1 A 11:30:00 AM Thursday Arrived Jan-22-2015 2 A 11:30:00 AM Thursday Arrived Jan-22-2015 3 A 11:30:00 AM Thursday Arrived Jan-22-2015 4 A 11:30:00 AM Thursday Missed May-15-2015 5 A 09:00:00 AM Friday Arrived May-15-2015 2 A 09:00:00 AM Friday Arrived May-15-2015 6 A 09:00:00 AM Friday Arrived May-22-2015 5 A 09:00:00 AM Friday Arrived May-22-2015 6 A 09:00:00 AM Friday Arrived May-22-2015 2 A 09:00:00 AM Friday Missed May-29-2015 5 A 09:00:00 AM Friday Arrived May-29-2015 6 A 09:00:00 AM Friday Arrived May-29-2015 2 A 09:00:00 AM Friday Missed
在上面的例子中,有2组群。队列1将由用户1,2,3和4组成,几乎所有人都参加了2015年1月8日至2015年1月22日期间的群组发布(主题A)。 2015年1月15日至2015年1月15日会议的相同用户参加了会议,几乎所有人也参加了2015年1月22日的会议。
的第2组(也为话题A)是由用户2,5,6的,与提供日期5月15日至29日,2015年
会话的数目没有提供每设置,因为它可以根据需求而变化,所以我不能将发行日期的会议数量考虑在内。
我看过Oracle/SQL: Split two inter-related lists into independent cohorts 但问题仍未解答。
通常我会在视觉上做了检查,并指定用户的同伙,但我行数以万计,并希望能有一个更有效的方式与SQL做到这一点。我运行MSSQL 2014
我一直在使用OUTER APPLY与自身表试过,但我没有真正得到我想要的结果。
请问您能指点我正确的方向吗?
SQL:
SELECT src.UserID
,src.GroupSessionDate
,src.StartTime
,src.DayofWeek
,src.Topic
,prevsessdata.GroupSessionDate
FROM GroupSessions src OUTER APPLY
(SELECT TOP 1 * GroupSessions prevsd WHERE src.Topic=prevsd.Topic
AND src.UserID=prevsd.UserID AND src.DayOfWeek=prevsd.DayOfWeek
AND src.StartTime=prevsd.StartTime
AND prevsd.GroupSessionDate<src.GroupSessionDate) prevsessdata
编辑: 假设可以做出:
- 会话通常发生间隔1周(例外:节假日)
- 在相同群组的所有会话会具有相同的主题,在一周的同一天,和相同的开始时间
- 用户可以停止参加,但他们犯了D IN他们错过了会议上市 - (!对不起,我错过了在原来的问题这个关键的细节)
- 相同的用户一般会列出组提供的所有会议,虽然用户可以参加多个主题组,所以有可能是用户被列为另一个群组的一部分的情况(这里用户2在1月和5月参加了提供)。但是,这将限制在一个队列中的10或12个用户中。
所需的输出: 每个主题,开始时间,以及陶氏,列出队列开始/结束日期。
谢谢!
你期待什么样的输出?而且,更重要的是,你究竟如何确定什么是或不是一个队列?例如你说2,5,6是一个队列,但是2只在第二批参加了这些小组会话之一。是否有任何可以做出的假设(例如,小组会议将始终是同一主题,同一天,如果他们是同一个“队列”,则每周相同时间)? – ZLK
对不起,我错过了这个。我将编辑帖子。 – user2716667