Advertisement
WorkAkkaunt

Отчет по операторам

Jun 26th, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.44 KB | None | 0 0
  1. /****** Script for SelectTopNRows command from SSMS  ******/
  2. DECLARE @OPERATOR uniqueidentifier
  3. DECLARE @TIME_START datetime
  4. DECLARE @TIME_FINISH datetime
  5. DECLARE @DAY datetime
  6.  
  7. SET @OPERATOR = '5EC13849-09B6-41DB-B0DA-9E36ACE5E461'
  8. SET @TIME_START = '1900-01-01 08:00:00.000'
  9. SET @TIME_FINISH = '1900-01-01 18:00:00.000'
  10. SET @DAY = '2018-04-06 0:00.000'
  11.  
  12. DECLARE @SECONDS_IN_MINUTE int
  13. SET @SECONDS_IN_MINUTE = 60
  14.  
  15. DECLARE @Time_In_Ready int
  16. DECLARE @Time_In_Break int
  17. DECLARE @Time_In_Conversation int
  18.  
  19. DECLARE @AllPhoneCalls TABLE([Name] nvarchar(100), DateStart date, TimeStart time, TimeFinish time, LenTime float, [State] int)
  20.  
  21. --Сохраняем отфильтрованные звонки в переменную
  22. INSERT INTO @AllPhoneCalls
  23. SELECT
  24.     [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo].Name
  25.     ,[DateStart]
  26.     ,CAST([DateTimeStart] AS time) [TimeStart]
  27.     ,CAST([DateTimeStop] AS time) [TimeStop]
  28.     ,[LenTime]
  29.     ,[State]
  30. FROM [oktell_cc_temp].[dbo].[Operator_States_Test]
  31. INNER JOIN
  32.   [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo]
  33.   ON [oktell_cc_temp].[dbo].[Operator_States_Test].IdOperator = [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo].ID
  34.   WHERE [oktell_cc_temp].[dbo].[Operator_States_Test].DateStart = @DAY
  35.         AND CAST([oktell_cc_temp].[dbo].[Operator_States_Test].DateTimeStop AS date) = CAST(@DAY AS date)
  36.         AND CAST([DateTimeStart] AS time) >= CAST(@TIME_START AS time)
  37.         AND CAST([DateTimeStop] AS time) <= CAST(@TIME_FINISH AS time)
  38.         AND [oktell_cc_temp].[dbo].[Operator_States_Test].IdOperator = @OPERATOR
  39.  
  40. SELECT
  41.     @Time_In_Ready = ROUND(SUM(IIF([State] = 10, LenTime, 0)) / @SECONDS_IN_MINUTE, 0)
  42.     , @Time_In_Break = ROUND(SUM(IIF([State] = 9, LenTime, 0)) / @SECONDS_IN_MINUTE, 0)
  43.     , @Time_In_Conversation = ROUND(SUM(IIF([State] = 4 OR [State] = 5 OR [State] = 6 OR [State] = 8, LenTime, 0)) / @SECONDS_IN_MINUTE, 0)
  44. FROM @AllPhoneCalls
  45.  
  46. SELECT [Name]
  47.     ,DateStart
  48.     ,@Time_In_Ready AS 'Time in ready'
  49.     ,@Time_In_Break AS 'Time in break'
  50.     ,@Time_In_Conversation AS 'Time in conversation'
  51.     ,CONCAT(CAST (ROUND(@Time_In_Conversation / CAST(@Time_In_Ready AS decimal), 2) * 100 AS int), '%')
  52.         AS 'Time in conversation/Time in ready %'
  53.     ,CONCAT(CAST(ROUND((@Time_In_Conversation + CAST(@Time_In_Ready AS decimal)) / (@Time_In_Ready + @Time_In_Break), 2) * 100 as int), '%')
  54.         AS 'Time in conversation + Time in ready / Time in ready + Time in break %'
  55. FROM @AllPhoneCalls
  56. GROUP BY [Name], DateStart
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement