Advertisement
WorkAkkaunt

temp

Aug 15th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.56 KB | None | 0 0
  1. DECLARE @DATE_START DATETIME = '20190805 00:00'
  2. DECLARE @DATE_END DATETIME = '20190811 23:59'
  3.  
  4. DECLARE @TIME_START DATETIME = '19000101 00:00'
  5. DECLARE @TIME_END DATETIME = '19000101 23:59'
  6.  
  7. DECLARE @TASKS TABLE (
  8.     Id UNIQUEIDENTIFIER
  9. )
  10.  
  11. INSERT INTO @TASKS
  12.     SELECT
  13.         id
  14.     FROM oktell.dbo.A_TaskManager_Tasks
  15.  
  16. DECLARE @OPERATORS TABLE (
  17.     Id UNIQUEIDENTIFIER
  18. )
  19.  
  20. INSERT INTO @OPERATORS VALUES ('6c739bd3-4348-4f96-9702-1cb638385d6a')
  21.  
  22. --INSERT INTO @OPERATORS
  23. --  SELECT
  24. --      Id
  25. --  FROM [oktell_settings].[dbo].[A_Users]
  26.  
  27. DECLARE @TYPE_TIME BIT = 'False'
  28.  
  29. DECLARE @TYPE_REPORT INT = 1
  30. --select 1, 'к каждой дате'
  31. --union all
  32. --select 2, 'к дате начала и конца'
  33. ----------------------------------------------------------------------------------
  34.  
  35. ----ФИЛЬТРУЕМ ВХОДЯЩИЕ ЗВОНКИ---------------------------------------------------------
  36. DECLARE @FilteredEffort TABLE (
  37.     OperId UNIQUEIDENTIFIER
  38.    ,LenTime INT
  39.    ,CallResult INT
  40.    ,IdEffort UNIQUEIDENTIFIER
  41. )
  42.  
  43. IF (@TYPE_REPORT = 1)
  44. BEGIN
  45.     INSERT INTO @FilteredEffort
  46.         SELECT
  47.             IdOperator
  48.            ,LenTime
  49.            ,CallResult
  50.            ,IdEffort
  51.         FROM [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]
  52.         WHERE DateTimeStart BETWEEN @DATE_START AND @DATE_END
  53.         AND TimeStart BETWEEN @TIME_START AND @TIME_END
  54.         AND IdTask IN (SELECT
  55.                 *
  56.             FROM @TASKS)
  57.         AND IdOperator IN (SELECT
  58.                 *
  59.             FROM @OPERATORS)
  60. END
  61.  
  62. IF (@TYPE_REPORT = 2)
  63. BEGIN
  64.     INSERT INTO @FilteredEffort
  65.         SELECT
  66.             IdOperator
  67.            ,CAST(LenTime AS INT)
  68.            ,CallResult
  69.            ,IdEffort
  70.         FROM [oktell_cc_temp].[dbo].[A_Cube_CC_EffortConnections]
  71.         WHERE (CAST(DateTimeStart AS DATE) = CAST(@DATE_START AS DATE)
  72.         OR CAST(DateTimeStart AS DATE) = CAST(@DATE_END AS DATE))
  73.         AND TimeStart BETWEEN @TIME_START AND @TIME_END
  74.         AND IdTask IN (SELECT
  75.                 *
  76.             FROM @TASKS)
  77.         AND IdOperator IN (SELECT
  78.                 *
  79.             FROM @OPERATORS)
  80. END
  81.  
  82. ---------ИЗВЛЕКАЕМ УСПЕШНЫЕ ВХОДЯЩИЕ ЗВОНКИ------------------------------------------------------
  83. DECLARE @SuccessIncom TABLE (
  84.     OperId UNIQUEIDENTIFIER
  85.    ,[Count] INT
  86.    ,AvgTime INT
  87. )
  88.  
  89. INSERT INTO @SuccessIncom
  90.     SELECT
  91.         OperId
  92.        ,COUNT(DISTINCT IdEffort)
  93.        ,CAST(AVG(LenTime) AS INT)
  94.     FROM @FilteredEffort
  95.     WHERE CallResult IN (5, 18)
  96.     GROUP BY OperId
  97. -----------------------------------------------------------------------------------------
  98.  
  99. ------ИЗВЛЕКАЕМ ПРОПУЩЕННЫЕ ВХОДЯЩИЕ ЗВОНКИ-------------------------------------------------------
  100. DECLARE @FailedIncom TABLE (
  101.     OperId UNIQUEIDENTIFIER
  102.    ,[Count] INT
  103. )
  104.  
  105. INSERT INTO @FailedIncom
  106.     SELECT
  107.         OperId
  108.        ,COUNT(DISTINCT IdEffort)
  109.     FROM @FilteredEffort
  110.     WHERE CallResult NOT IN (5, 18)
  111.     GROUP BY OperId
  112. -----------------------------------------------------------------------------------------
  113.  
  114. ---------ИЗВЛЕКАЕМ ВСЕ ВХОДЯЩИЕ ЗВОНКИ------------------------------------------------------
  115. DECLARE @AllIncom TABLE (
  116.     OperId UNIQUEIDENTIFIER
  117.    ,[Count] INT
  118. )
  119.  
  120. INSERT INTO @AllIncom
  121.     SELECT
  122.         OperId
  123.        ,COUNT(DISTINCT IdEffort)
  124.     FROM @FilteredEffort
  125.     GROUP BY OperId
  126. -----------------------------------------------------------------------------------------
  127. ------ВЫВОДИМ РЕЗУЛЬТАТ------------------------------------------------------------------
  128. DECLARE @Result TABLE (
  129.     [Name] NVARCHAR(50)
  130.    ,Incoming INT
  131.    ,Outgoing INT
  132.    ,Failed INT
  133.    ,AvgTime NVARCHAR(20)
  134.    ,AvgTime1 INT
  135. )
  136.  
  137. INSERT INTO @Result
  138.     SELECT
  139.         OI.[Name]
  140.        ,ISNULL(AI.[Count], 0)
  141.        ,ISNULL(SI.[Count], 0)
  142.        ,ISNULL(FI.[Count], 0)
  143.        ,(SELECT
  144.                 [dbo].[GetTimeFromSecond](ISNULL(SI.AvgTime, 0)))
  145.        ,ISNULL(SI.AvgTime, 0)
  146.     FROM @AllIncom AS AI
  147.     LEFT JOIN [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo] AS OI
  148.         ON AI.OperId = OI.Id
  149.     LEFT JOIN @SuccessIncom AS SI
  150.         ON AI.OperId = SI.OperId
  151.     LEFT JOIN @FailedIncom AS FI
  152.         ON AI.OperId = FI.OperId
  153.  
  154. IF (@TYPE_TIME = 'True')
  155. BEGIN
  156.     SELECT
  157.         [Name] AS 'Менеджер'
  158.        ,Incoming AS 'Итого Поступило'
  159.        ,Outgoing AS 'Итого Принято'
  160.        ,Failed AS 'Итого Пропущено'
  161.        ,AvgTime AS 'Среднее время ответа'
  162.     FROM @Result
  163.     ORDER BY AvgTime1 DESC
  164. END
  165.  
  166. IF (@TYPE_TIME = 'False')
  167. BEGIN
  168.     SELECT
  169.         [Name] AS 'Менеджер'
  170.        ,Incoming AS 'Итого Поступило'
  171.        ,Outgoing AS 'Итого Принято'
  172.        ,Failed AS 'Итого Пропущено'
  173.        ,AvgTime AS 'Среднее время ответа'
  174.     FROM @Result
  175.     ORDER BY AvgTime1
  176. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement