Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime);
  2.  
  3. with TimeRanges as (
  4. select @Start as StartTime, @Start + @TimeRange as EndTime
  5. union all
  6. select StartTime + @TimeRange, EndTime + @TimeRange
  7. from TimeRanges
  8. where EndTime < @Finish )
  9.  
  10. ;with cte as
  11. (
  12. select SessionStartTime as changetime,1 as CC from Calls
  13. union all
  14. select SessionCloseTime,-1 from Calls
  15. )
  16. select top 1 changetime,rt from
  17. (
  18. select * from cte
  19. cross apply
  20. (select SUM(cc) as rt from cte c where c.changetime<=cte.changetime) rt
  21. ) v
  22. order by rt desc
  23.  
  24. @Start datetime,
  25. @Finish datetime,
  26. @TimeRange time
  27. AS
  28. BEGIN
  29.  
  30. SET NOCOUNT ON;
  31. declare @res int SET @res = 0
  32.  
  33. declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime);
  34.  
  35. with TimeRanges as
  36. ( select @Start as StartTime, @Start + @TimeRange as EndTime
  37. union all
  38. select StartTime + @TimeRange, EndTime + @TimeRange
  39. from TimeRanges
  40. where EndTime < @Finish ),
  41.  
  42.  
  43. cte as
  44. (
  45. select SessionStart as changetime,1 as CC from TimeRanges
  46. union all
  47. select SessionEnd,-1 from TimeRanges
  48. )
  49. select top 1 changetime,rt from
  50. (
  51. select * from cte
  52. cross apply
  53. (select SUM(cc) as rt from cte c where c.changetime<=cte.changetime) rt
  54. ) v
  55. order by rt desc
  56.  
  57.  
  58. select StartTime, EndTime,cte.rt
  59. from TimeRanges as TR left outer join
  60. dbo.Test as Test on TR.StartTime <= Test.SessionStartTime
  61. and Test.SessionCloseTime < TR.EndTime
  62. where Test.ScenarioID = 24
  63. group by TR.StartTime, TR.EndTime,cte.rt
  64. END
  65.  
  66. with TimeRanges as
  67. ( select @Start as StartTime, @Start + @TimeRange as EndTime --StartTime and EndTime
  68. union all
  69. select StartTime + @TimeRange, EndTime + @TimeRange
  70. from TimeRanges
  71. where EndTime < @Finish ),
  72.  
  73.  
  74. cte as
  75. (
  76. select StartTime as changetime,1 as CC from TimeRanges --StartTime, not SessionStart
  77. union all
  78. select EndTime,-1 from TimeRanges --EndTime
  79. )
  80. select top 1 changetime,rt from
  81. (
  82. select * from cte
  83. cross apply
  84. (select SUM(cc) as rt from cte c where c.changetime<=cte.changetime) rt
  85. ) v
  86. order by rt desc
  87.  
  88. with TimeRanges as
  89. ( select @Start as StartTime, @Start + @TimeRange as EndTime --StartTime and EndTime
  90. union all
  91. select StartTime + @TimeRange, EndTime + @TimeRange
  92. from TimeRanges
  93. where EndTime < @Finish )
  94. select StartTime, EndTime,cte.rt
  95. from TimeRanges as TR left outer join
  96. dbo.Test as Test on TR.StartTime <= Test.SessionStartTime
  97. and Test.SessionCloseTime < TR.EndTime
  98. where Test.ScenarioID = 24
  99. group by TR.StartTime, TR.EndTime,cte.rt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement