Advertisement
WorkAkkaunt

Геттаксе Рабочее время оперов V4

Aug 1st, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.53 KB | None | 0 0
  1. DECLARE @DATE_END datetime = '20190727 23:59'
  2.  
  3. DECLARE @TIME_START DATETIME = '19000101 00:00'
  4. DECLARE @TIME_END DATETIME = '19000101 23:59'
  5.  
  6. DECLARE @TASKS TABLE (Id uniqueidentifier)
  7.  
  8. INSERT INTO @tasks
  9. SELECT id FROM oktell.dbo.A_TaskManager_Tasks
  10.  
  11. DECLARE @OPERATORS TABLE (Id uniqueidentifier)
  12.  
  13. INSERT INTO @operators
  14. SELECT Id
  15. FROM [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo]
  16.     WHERE [Name] LIKE '%kelly%'*/
  17.  
  18. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  19. --------ОТФИЛЬТРОВЫВАЕМ И СОЕДИНЯЕМ ТАБЛИЦЫ-----------------------------------------------------------
  20. DECLARE @OperStates TABLE
  21.     (
  22.         IdTask uniqueidentifier
  23.         , IdOperator uniqueidentifier
  24.         , TimeStart datetime
  25.         , [State] int
  26.         , ICode int
  27.         , LenTime int
  28.         , UserState int
  29.     );
  30.  
  31. WITH FilteredTable AS
  32. (
  33.     SELECT IdTask
  34.         , IdOperator
  35.         , DateTimeStart
  36.         , [State]
  37.         , ICode
  38.         , LenTime
  39.     FROM [oktell_cc_temp].[dbo].[A_Cube_CC_OperatorStates] WITH (NOLOCK)
  40.     WHERE DateTimeStart BETWEEN @DATE_START AND @DATE_END
  41.         AND TimeStart BETWEEN @TIME_START AND @TIME_END
  42.         AND IdOperator IN (SELECT * FROM @OPERATORS)
  43. )
  44.  
  45. INSERT INTO @OperStates
  46. SELECT IdTask
  47.     , IdOperator
  48.     , DateTimeStart
  49.     , OS.[State]
  50.     , OS.ICode
  51.     , CAST(LenTime as int)
  52.     , US.[State]
  53. FROM FilteredTable as OS
  54. LEFT JOIN [oktell].[dbo].[A_UserStateHistory] as US
  55.     ON US.UserId = OS.IdOperator AND OS.DateTimeStart = US.TimeChange
  56.  
  57. -------------------------------------------------------------------------------------------------
  58. ---------СЧИТАЕМ ВХОДЯЩИЕ--------------------------------------------------------------
  59. DECLARE @FilteredEffort TABLE(OperId uniqueidentifier, [Count] int)
  60.  
  61. INSERT INTO @FilteredEffort
  62. SELECT IdOperator, COUNT(IdOperator)
  63. FROM [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]
  64. WHERE DateTimeStart BETWEEN @DATE_START AND @DATE_END
  65.     AND TimeStart BETWEEN @TIME_START AND @TIME_END
  66.     AND BLineNum <> 'IVR' AND IsOutput = 0
  67.     AND IdTask IN (SELECT * FROM @TASKS)
  68.     AND IdOperator IN (SELECT * FROM @OPERATORS)
  69.     and IsRecorded = 1
  70. GROUP BY IdOperator
  71. ----------------------------------------------------------------------------------------
  72.  
  73. ---------СЧИТАЕМ ИСХОДЯЩИЕ--------------------------------------------------------------
  74. DECLARE @FilteredStat TABLE(OperId uniqueidentifier, [Count] int)
  75.  
  76. INSERT INTO @FilteredStat
  77. SELECT AUserId, COUNT(AUserId)
  78. FROM [oktell].[dbo].[A_Stat_Connections_1x1]
  79. WHERE TimeStart BETWEEN @DATE_START AND @DATE_END
  80.     AND CAST(TimeStart as time) BETWEEN CAST(@TIME_START as time) AND CAST(@TIME_END as time)
  81.     AND ConnectionType = 1
  82.     AND AUserId IN (SELECT * FROM @OPERATORS)
  83. GROUP BY AUserId;
  84. -----------------------------------------------------------------------------------------
  85.  
  86. ------ПОДСЧИТЫВАЕМ ВСЕ ЗНАЧЕНИЯ----------------------------------------------------------
  87. WITH FinalTable AS
  88. (
  89.     SELECT IdOperator
  90.         , SUM(LenTime) as SumTotal
  91.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] IN (1, 2, 3)                                   AND OS.IdOperator = IdOperator AND IdTask IN     (SELECT * FROM @TASKS)), 0) as BeforeTask
  92.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 6                                            AND OS.IdOperator = IdOperator AND IdTask IN     (SELECT * FROM @TASKS)), 0) as Tasks
  93.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] IN (1, 2, 3, 4, 6, 7)                          AND OS.IdOperator = IdOperator AND IdTask NOT IN (SELECT * FROM @TASKS)), 0) as OtherTasks
  94.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 10                                           AND OS.IdOperator = IdOperator), 0) as Ready
  95.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] IN (5, 8)                                      AND OS.IdOperator = IdOperator), 0) as Talk
  96.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE ([State] = 9 AND UserState IS NULL OR UserState = 3)   AND OS.IdOperator = IdOperator), 0) as [Break]
  97.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 1                              AND OS.IdOperator = IdOperator), 0) as Dispatchs
  98.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 2                              AND OS.IdOperator = IdOperator), 0) as Tickets
  99.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 3                              AND OS.IdOperator = IdOperator), 0) as Chat
  100.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 4                              AND OS.IdOperator = IdOperator), 0) as Other
  101.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 6                              AND OS.IdOperator = IdOperator), 0) as Refunds
  102.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 7                              AND OS.IdOperator = IdOperator), 0) as Training
  103.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 9 AND ICode = 8                              AND OS.IdOperator = IdOperator), 0) as Tech
  104.         , ISNULL((SELECT SUM(LenTime) FROM @OperStates WHERE [State] = 7                                            AND OS.IdOperator = IdOperator), 0) as Post
  105.         , ISNULL((SELECT AVG(LenTime) FROM @OperStates WHERE [State] = 7                                            AND OS.IdOperator = IdOperator), 0) as AvgPost
  106.         , ISNULL((SELECT TOP 1 [Count] FROM @FilteredEffort WHERE OperId = OS.IdOperator), 0) as Incoming
  107.         , ISNULL((SELECT TOP 1 [Count] FROM @FilteredStat WHERE OperId = OS.IdOperator), 0) as Outgoing
  108.     FROM @OperStates AS OS
  109.     GROUP BY (IdOperator)
  110. )
  111. ----------------------------------------------------------------------------------------------------------------------------------------------------------------
  112. SELECT OI.Name
  113.     , (SELECT [dbo].[IntToTimeStr](Tasks)) as 'Разговоры по задаче'
  114.     , (SELECT [dbo].[IntToTimeStr](BeforeTask)) as 'Время до ответа'
  115.     , (SELECT [dbo].[IntToTimeStr](Post)) as 'ACW'
  116.     , (SELECT [dbo].[IntToTimeStr](OtherTasks)) as 'Разговоры по др. задачам'
  117.     , (SELECT [dbo].[IntToTimeStr](Talk)) as 'Разговоры не по задаче'
  118.     , (SELECT [dbo].[IntToTimeStr](Ready)) as 'Готов'
  119.     , (SELECT [dbo].[IntToTimeStr]([Break])) as 'Перерыв'
  120.     , (SELECT [dbo].[IntToTimeStr](Dispatchs)) as 'Отправка'
  121.     , (SELECT [dbo].[IntToTimeStr](Tickets)) as 'Тикеты'
  122.     , (SELECT [dbo].[IntToTimeStr](Chat)) as 'Чат'
  123.     , (SELECT [dbo].[IntToTimeStr](Other)) as 'Другое'
  124.     , (SELECT [dbo].[IntToTimeStr](Refunds)) as 'Возврат'
  125.     , (SELECT [dbo].[IntToTimeStr](Training)) as 'Обучение'
  126.     , (SELECT [dbo].[IntToTimeStr](Tech)) as 'Технический вопрос'
  127.     , (SELECT [dbo].[IntToTimeStr](SumTotal)) as 'Всего'
  128.     , Incoming as 'Входящие'
  129.     , Outgoing as 'Исходящие'
  130.     , (SELECT [dbo].[IntToTimeStr](AvgPost)) as 'Среднее время постобработки'
  131. FROM FinalTable as F
  132. LEFT JOIN [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo] as OI
  133.     ON OI.Id = F.IdOperator
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement