Advertisement
WorkAkkaunt

Звонков В2В по операторам

Aug 6th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.89 KB | None | 0 0
  1. DECLARE @d1 DATETIME =  '20190731 00:00'
  2. DECLARE @d2 DATETIME =  '20190731 23:59'
  3. DECLARE @t1 DATETIME =  '19000101 00:00'
  4. DECLARE @t2 DATETIME =  '19000101 23:59'
  5.  
  6. DECLARE @user TABLE (Id UNIQUEIDENTIFIER)
  7. INSERT INTO @user
  8. SELECT Id FROM [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo]
  9. ------------------------------------------------------------------------------------------------------
  10.  
  11. --------СЧИТАЕМ ПРИНЯТЫЕ------------------------------------------------------------------------------
  12. DECLARE @Accepted TABLE (UserId uniqueidentifier, [Count] int, AvgTimeAnswer int, AvgTimeTalking int)
  13.  
  14. INSERT INTO @Accepted
  15. SELECT BUserId
  16.     , COUNT(DISTINCT IdChain)
  17.     , AVG(DATEDIFF(SECOND, TimeStart, TimeAnswer))
  18.     , AVG(DATEDIFF(SECOND, TimeAnswer, TimeStop))
  19. FROM [oktell].[dbo].[A_Stat_Connections_1x1] AS SC
  20. WHERE BUserId IN (SELECT * FROM @user)
  21.         AND TimeStart BETWEEN @d1 AND @d2
  22.         AND CAST(TimeStart as time) BETWEEN CAST(@t1 as time) AND CAST(@t2 as time)
  23. GROUP BY BUserId
  24. ------------------------------------------------------------------------------------------------------
  25.  
  26. --------СЧИТАЕМ ПРОПУЩЕННЫЕ---------------------------------------------------------------------------
  27. DECLARE @Missed TABLE (UserId uniqueidentifier, [Count] int)
  28.  
  29. INSERT INTO @Missed
  30. SELECT BUserId
  31.     , COUNT(DISTINCT IdChain)
  32. FROM [oktell].[dbo].[A_Stat_MissedCalls] AS MC
  33. WHERE BUserId IN (SELECT * FROM @user)
  34.         AND TimeStart BETWEEN @d1 AND @d2
  35.         AND CAST(TimeStart as time) BETWEEN CAST(@t1 as time) AND CAST(@t2 as time)
  36. GROUP BY BUserId
  37. -------------------------------------------------------------------------------------------------------
  38.  
  39. -------СЧИТАЕМ ВСЕ ЗВОНКИ------------------------------------------------------------------------------
  40.  
  41. DECLARE @All TABLE (UserId uniqueidentifier, [Count] int)
  42.  
  43. INSERT INTO @All
  44. SELECT U.Id
  45.     , ISNULL( ISNULL(A.[Count], 0) + ISNULL(M.[Count], 0) , 0)
  46. FROM @user as U
  47. LEFT JOIN @Accepted as A
  48.     ON U.Id = A.UserId
  49. LEFT JOIN @Missed as M
  50.     ON U.Id = M.UserId
  51. -------------------------------------------------------------------------------------------------------
  52.  
  53. SELECT OI.[Name] as 'Оператор'
  54.     , A.[Count] as 'Всего'
  55.     , ISNULL(AC.[Count], 0) as 'Принято'
  56.     , ISNULL(M.[Count], 0) as 'Пропущено'
  57.     , ISNULL((SELECT [dbo].[GetPersent](AC.[Count], A.[Count])), '0%') as 'Принято %'
  58.     , ISNULL((SELECT [dbo].[GetPersent](M.[Count], A.[Count])), '0%') as 'Пропущено %'
  59.     , ISNULL(AC.AvgTimeAnswer, 0)  as 'Среднее время ответа сек'
  60.     , ISNULL((SELECT [dbo].[GetTimeFromSecond](AC.AvgTimeTalking)), 0) as 'Среднее время разговора'
  61. FROM @All AS A
  62. LEFT JOIN [oktell_cc_temp].[dbo].[A_Cube_CC_Cat_OperatorInfo] AS OI
  63.     ON A.UserId = OI.Id
  64. LEFT JOIN @Accepted AS AC
  65.     ON A.UserId = AC.UserId
  66. LEFT JOIN @Missed AS M
  67.     ON A.UserId = M.UserId
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement