Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE @calendar TABLE (dateTime DATETIME)
- DECLARE @daTetime DATETIME = '2020-07-08'
- SET NOCOUNT ON
- WHILE CAST(@dateTime AS DATE) < '2020-11-08'
- BEGIN
- INSERT INTO @calendar (dateTime) VALUES (@dateTime)
- SET @dateTime = DATEADD(MINUTE,5,@dateTime)
- END
- SET NOCOUNT OFF
- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ;with tab as (
- SELECT a.[Session Id]
- , a.[Participant Id]
- , a.[Full Name]
- , a.[UserAgent]
- , SessionStartTime
- , SessionEndTime
- , a.[Role]
- FROM(
- SELECT [Session Id]
- , [Participant Id]
- , [Full Name]
- , [UserAgent]
- , [UTC Event Timestamp] as SessionStartTime
- , [Action]
- , [Role]
- FROM [dbo].[meetings]
- WHERE Action = 'joined'
- ) s join (
- SELECT [Session Id]
- ,[Participant Id]
- ,[Full Name]
- ,[UserAgent]
- ,[UTC Event Timestamp] as SessionEndTime
- ,[Action]
- ,[Role]
- FROM [dbo].[meetings]
- WHERE Action = 'Left'
- ) a on s.[Session Id] = a.[Session Id]
- )
- SELECT *,
- DATEDIFF(SECOND,
- CASE WHEN e.SessionStartTime >= c.dateTime THEN e.SessionStartTime
- WHEN e.SessionStartTime < c.dateTime THEN c.dateTime
- END,
- CASE WHEN e.SessionEndTime <= DATEADD(MINUTE,5,c.dateTime) THEN e.SessionEndTime
- WHEN e.SessionEndTime > DATEADD(MINUTE,5,c.dateTime) THEN DATEADD(MINUTE,5,c.dateTime)
- END
- ) as granularity
- FROM @calendar c
- LEFT OUTER JOIN tab e
- ON e.SessionStartTime BETWEEN c.dateTime AND DATEADD(MINUTE,5,c.dateTime)
- OR e.SessionEndTime BETWEEN c.dateTime AND DATEADD(MINUTE,5,c.dateTime)
- OR c.dateTime BETWEEN e.SessionStartTime AND e.SessionEndTime
- where [Session Id] is not null
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement