Advertisement
madcozbad

Untitled

Aug 15th, 2020
459
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.97 KB | None | 0 0
  1.  
  2. DECLARE @calendar TABLE (dateTime DATETIME)
  3. DECLARE @daTetime DATETIME = '2020-07-08'
  4. SET NOCOUNT ON
  5. WHILE CAST(@dateTime AS DATE) < '2020-11-08'
  6. BEGIN
  7. INSERT INTO @calendar (dateTime) VALUES (@dateTime)
  8. SET @dateTime = DATEADD(MINUTE,5,@dateTime)
  9. END
  10. SET NOCOUNT OFF
  11. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  12. ;with tab as (
  13. SELECT a.[Session Id]
  14.      , a.[Participant Id]
  15.      , a.[Full Name]
  16.      , a.[UserAgent]
  17.      , SessionStartTime
  18.      , SessionEndTime
  19.      , a.[Role]
  20. FROM(
  21.             SELECT  [Session Id]
  22.                   , [Participant Id]
  23.                   , [Full Name]
  24.                   , [UserAgent]
  25.                   , [UTC Event Timestamp] as SessionStartTime
  26.                   , [Action]
  27.                   , [Role]
  28.             FROM [dbo].[meetings]
  29.             WHERE Action = 'joined'
  30.       ) s join (
  31.             SELECT [Session Id]
  32.                   ,[Participant Id]
  33.                   ,[Full Name]
  34.                   ,[UserAgent]
  35.                   ,[UTC Event Timestamp] as SessionEndTime
  36.                   ,[Action]
  37.                   ,[Role]
  38.             FROM [dbo].[meetings]
  39.             WHERE Action = 'Left'
  40.       ) a on s.[Session Id] = a.[Session Id]
  41. )
  42.  
  43.  
  44. SELECT *,
  45. DATEDIFF(SECOND,
  46. CASE WHEN e.SessionStartTime >= c.dateTime THEN e.SessionStartTime
  47.      WHEN e.SessionStartTime <  c.dateTime THEN c.dateTime
  48. END,
  49. CASE WHEN e.SessionEndTime <= DATEADD(MINUTE,5,c.dateTime) THEN e.SessionEndTime
  50.      WHEN e.SessionEndTime >  DATEADD(MINUTE,5,c.dateTime) THEN DATEADD(MINUTE,5,c.dateTime)
  51. END
  52. ) as granularity
  53.   FROM @calendar c
  54.     LEFT OUTER JOIN tab e
  55.       ON e.SessionStartTime BETWEEN c.dateTime AND DATEADD(MINUTE,5,c.dateTime)
  56.       OR e.SessionEndTime BETWEEN c.dateTime AND DATEADD(MINUTE,5,c.dateTime)
  57.       OR c.dateTime BETWEEN e.SessionStartTime AND e.SessionEndTime
  58.       where [Session Id] is not null
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement