Advertisement
WorkAkkaunt

Северсталь отчет 11

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