WorkAkkaunt

OneTwoTrip по локали мое

Aug 6th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.90 KB | None | 0 0
  1.  
  2. declare @d1 datetime = '2016-11-01 00:00:00'
  3. declare @d2 datetime = '2016-11-24 00:00:00'
  4.  
  5. declare @task table (id uniqueidentifier)
  6. insert into @task
  7. --values( '8B199244-CA64-400E-9734-40AE42B63261'),('0C9B090C-3663-4E8A-92A7-82714D6CB161')
  8. select ID    FROM [oktell_settings].[dbo].[A_TaskManager_Tasks] where ID not in ('9C16C13C-E089-4225-AB3F-78F1D53E5FD7','8B199244-CA64-400E-9734-40AE42B63261')
  9. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  10.  
  11. ----------ФИЛЬТРУЕМ EffortConnections----------------------------------------------------------------   
  12. DECLARE @EffortConnections TABLE (IdChain uniqueidentifier, DateStart date, IdEffort uniqueidentifier)
  13.  
  14. INSERT INTO @EffortConnections
  15. SELECT IdChain
  16.     , DateStart
  17.     , IdEffort
  18. FROM [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]
  19. WHERE DateStart BETWEEN @d1 AND @d2
  20.     AND IdTask IN (SELECT * FROM @task)
  21. ORDER BY DateStart
  22. -----------------------------------------------------------------------------------------------------
  23.  
  24. ---------ФИЛЬТРУЕМ StatConnections------------------------------------------------------------------- 
  25. DECLARE @StatConnections TABLE
  26.     (
  27.         IdChain uniqueidentifier, DateStart date, ConnectionType int
  28.         , IdPrev uniqueidentifier, IdNext uniqueidentifier
  29.         , TimeStart datetime, TimeAnswer datetime, TimeStop datetime
  30.         , ReasonStop int
  31.     )
  32.  
  33. INSERT INTO @StatConnections
  34. SELECT SC.IdChain
  35.     , CAST(TimeStart as date)
  36.     , ConnectionType
  37.     , IdPrev
  38.     , IdNext
  39.     , TimeStart
  40.     , TimeAnswer
  41.     , TimeStop
  42.     , ReasonStop
  43. FROM [oktell].[dbo].[A_Stat_Connections_1x1] as SC
  44. JOIN @EffortConnections as EC
  45.     ON SC.IdChain = EC.IdChain
  46. WHERE TimeStart BETWEEN @d1 AND @d2
  47. ORDER BY TimeStart
  48. ------------------------------------------------------------------------------------------------------
  49.  
  50. -------СЧИТАЕМ ВХОДЯЩИЕ ЗВОНКИ------------------------------------------------------------------------
  51. DECLARE @InputCalls TABLE (TimeStart date, [Count] int)
  52.  
  53. INSERT INTO @InputCalls
  54. SELECT DateStart
  55.     , COUNT(DISTINCT IdChain)
  56. FROM @EffortConnections
  57. GROUP BY DateStart
  58.  
  59. --SELECT * FROM @InputCalls
  60. ------------------------------------------------------------------------------------------------------
  61.  
  62. -------СЧИТАЕМ ПРИНЯТЫЕ ЗВОНКИ------------------------------------------------------------------------
  63. DECLARE @AcceptedCalls TABLE (TimeStart date, [Count] int)
  64.  
  65. INSERT INTO @AcceptedCalls
  66. SELECT DateStart
  67.     , COUNT(DISTINCT IdChain)
  68. FROM @StatConnections
  69. WHERE ConnectionType = 4
  70.     AND IdPrev IS NULL
  71.     AND IdNext IS NOT NULL
  72. GROUP BY DateStart
  73.  
  74. --SELECT * FROM @AcceptedCalls
  75. -------------------------------------------------------------------------------------------------------
  76.  
  77. -------СЧИТАЕМ ПОТЕРЯНЫЕ ЗВОНКИ------------------------------------------------------------------------
  78. DECLARE @LostCalls TABLE (TimeStart date, [Count] int)
  79.  
  80. INSERT INTO @LostCalls
  81. SELECT DateStart
  82.     , COUNT(DISTINCT IdChain)
  83. FROM @StatConnections
  84. WHERE ConnectionType = 4
  85.     AND IdPrev IS NULL
  86.     AND IdNext IS NULL
  87. GROUP BY DateStart
  88.  
  89. --SELECT * FROM @LostCalls
  90. -------------------------------------------------------------------------------------------------------
  91.  
  92. ------СРЕДНЕЕ ВРЕМЯ ASA-----------------------------------------------------------------------------
  93. DECLARE @AvgIvr TABLE (TimeStart date, LenTime int)
  94.  
  95. INSERT INTO @AvgIvr
  96. SELECT DateStart
  97.     , AVG(DATEDIFF(SECOND, TimeStart, TimeStop))
  98. FROM @StatConnections
  99. WHERE ConnectionType = 4
  100. GROUP BY DateStart
  101.  
  102. --SELECT * FROM @AvgIvr
  103. -------------------------------------------------------------------------------------------------------
  104.  
  105. ------СРЕДНЕЕ ВРЕМЯ AHT-----------------------------------------------------------------------------
  106. DECLARE @AvgTalk TABLE (TimeStart date, LenTime int)
  107.  
  108. INSERT INTO @AvgTalk
  109. SELECT DateStart
  110.     , AVG(DATEDIFF(SECOND, TimeStart, TimeStop))
  111. FROM @StatConnections
  112. WHERE ConnectionType = 5
  113. GROUP BY DateStart
  114.  
  115. --SELECT * FROM @AvgTalk
  116. -------------------------------------------------------------------------------------------------------
  117.  
  118. ------СРЕДНЕЕ ВРЕМЯ ATT--------------------------------------------------------------------------------
  119. DECLARE @AvgAnswer TABLE (TimeStart date, LenTime int)
  120.  
  121. INSERT INTO @AvgAnswer
  122. SELECT DateStart
  123.     , AVG(DATEDIFF(SECOND, TimeStart, TimeAnswer))
  124. FROM @StatConnections
  125. WHERE ConnectionType = 5
  126. GROUP BY DateStart
  127.  
  128. --SELECT * FROM @AvgAnswer
  129. -------------------------------------------------------------------------------------------------------
  130.  
  131. ------СРЕДНЕЕ ВРЕМЯ ПОСТВЫЗОВА-------------------------------------------------------------------------
  132. DECLARE @AvgPost TABLE (TimeStart date, LenTime int)
  133.  
  134. INSERT INTO @AvgPost
  135. SELECT OS.DateStart
  136.      , AVG(LenTime)
  137. FROM [oktell_cc_temp].[dbo].[A_Cube_CC_OperatorStates] as OS
  138. JOIN @EffortConnections as EC
  139.     ON OS.IdEffort = EC.IdEffort
  140. JOIN @StatConnections as SC
  141.     ON EC.IdChain = SC.IdChain
  142. WHERE OS.DateStart BETWEEN @d1 AND @d2
  143.     AND IdTask IN (SELECT * FROM @task)
  144.     AND [State] = 7
  145. GROUP BY OS.DateStart
  146. ORDER BY OS.DateStart
  147.  
  148. --SELECT * FROM @AvgPost
  149. -------------------------------------------------------------------------------------------------------
  150.  
  151. ------СРЕДНЕЕ ВРЕМЯ УДЕРЖАНИЯ-------------------------------------------------------------------------
  152. DECLARE @AvgHold TABLE (TimeStart date, LenTime int)
  153.  
  154. INSERT INTO @AvgHold
  155. SELECT DateStart
  156.     , AVG(DATEDIFF(SECOND, TimeStart, TimeStop))
  157. FROM @StatConnections
  158. WHERE ReasonStop = 6
  159. GROUP BY DateStart
  160.  
  161. --SELECT * FROM @AvgHold
  162. -------------------------------------------------------------------------------------------------------
  163.  
  164. ------SLA----------------------------------------------------------------------------------------------
  165. DECLARE @SLA TABLE (TimeStart date, [Count] int)
  166.  
  167. INSERT INTO @SLA
  168. SELECT DateStart
  169.     , COUNT(DateStart)
  170. FROM @StatConnections
  171. WHERE ConnectionType = 5
  172.     AND DATEDIFF(SECOND, TimeStart, TimeAnswer) > 20
  173. GROUP BY DateStart
  174.  
  175. --SELECT * FROM @SLA
  176. -------------------------------------------------------------------------------------------------------
  177.  
  178. SELECT IC.TimeStart AS 'Дата'
  179.     , ISNULL(IC.[Count], 0) AS 'Входящие вызовы'
  180.     , ISNULL(AC.[Count], 0) AS 'Принятые вызовы'
  181.     , ISNULL(LC.[Count], 0) AS 'Потеряные вызовы'
  182.     , ISNULL((SELECT [dbo].[GetPersent](AC.[Count], IC.[Count])), '0%') AS '% Принятых вызовов'
  183.     , ISNULL((SELECT [dbo].[GetPersent](LC.[Count], IC.[Count])), '0%') AS '% Потеряных вызовов'
  184.     , ISNULL(SLA.[Count], 0) AS 'Больше 20'
  185.     , ISNULL((SELECT [dbo].[GetPersent](ISNULL(IC.[Count], 0) - ISNULL(SLA.[Count], 0), IC.[Count])), '0%') AS 'SLA 80/20'
  186.     , (SELECT [dbo].[GetTimeFromSecond](ISNULL(AI.LenTime, 0))) AS 'Среднее время ответа ASA'
  187.     , (SELECT [dbo].[GetTimeFromSecond](ISNULL(AT.LenTime, 0))) AS 'ССреднее время ответа AHT'
  188.     , (SELECT [dbo].[GetTimeFromSecond](ISNULL(AA.LenTime, 0))) AS 'Среднее время ATT'
  189.     , (SELECT [dbo].[GetTimeFromSecond](ISNULL(AP.LenTime, 0))) AS 'Среднее время поствызова'
  190.     , (SELECT [dbo].[GetTimeFromSecond](ISNULL(AH.LenTime, 0))) AS 'Среднее время удержания'
  191. FROM @InputCalls AS IC
  192. LEFT JOIN @AcceptedCalls AS AC
  193.     ON IC.TimeStart = AC.TimeStart
  194. LEFT JOIN @LostCalls AS LC
  195.     ON IC.TimeStart = LC.TimeStart
  196. LEFT JOIN @SLA AS SLA
  197.     ON IC.TimeStart = SLA.TimeStart
  198. LEFT JOIN @AvgIvr AS AI
  199.     ON IC.TimeStart = AI.TimeStart
  200. LEFT JOIN @AvgTalk AS AT
  201.     ON IC.TimeStart = AT.TimeStart
  202. LEFT JOIN @AvgAnswer AS AA
  203.     ON IC.TimeStart = AA.TimeStart
  204. LEFT JOIN @AvgPost AS AP
  205.     ON IC.TimeStart = AP.TimeStart
  206. LEFT JOIN @AvgHold AS AH
  207.     ON IC.TimeStart = AH.TimeStart
Advertisement
Add Comment
Please, Sign In to add comment