WorkAkkaunt

Отчет по звонкам

Jun 25th, 2019
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.97 KB | None | 0 0
  1. /****** Script for SelectTopNRows command from SSMS  ******/
  2. DECLARE @MissingPhoneCalls TABLE(Date_ date, Missing_Calls int)
  3. DECLARE @FailedPhoneCalls TABLE(Date_ date, Failed_Calls int)
  4. DECLARE @In_Out_Calls TABLE(Date_ date, Outcoming_Calls int, Incoming_Calls int)
  5. DECLARE @ThreePhoneCalls TABLE(Date_ date, Outcoming_Calls int, Incoming_Calls int, Missing_Calls int)
  6. DECLARE @AllCalls TABLE(Date_ date, Outcoming_Calls int, Incoming_Calls int, Missing_Calls int, Failed_Calls int)
  7. DECLARE @Operators TABLE(Operator nvarchar(200), Id uniqueidentifier, Date_ date)
  8.  
  9. --Переменные
  10. DECLARE @USERS TABLE(Id uniqueidentifier)
  11. DECLARE @DATE_START date
  12. DECLARE @DATE_END date
  13.  
  14. SET @DATE_START = '2017-05-17'
  15. SET @DATE_END = '2019-05-24'
  16. INSERT @USERS VALUES('273042C9-7A73-4AFE-8C0A-A8E6C02998E9')
  17.  
  18. --Получаем количество входящих и исходящих звонков, схраням в переменную
  19. INSERT INTO @In_Out_Calls
  20. SELECT
  21.     CAST(TimeStart AS DATE) AS Date_
  22.     ,COUNT(IIF(ReasonStart=3, 1, NULL))
  23.     ,COUNT(IIF(ReasonStart=2, 1, NULL))
  24. FROM [oktell].[dbo].[A_Stat_Connections_1x1]
  25. GROUP BY CAST(TimeStart AS DATE)
  26. ORDER BY CAST(TimeStart AS DATE)
  27.  
  28. --Сохраняем в переменную пропущенные звонки
  29. INSERT INTO @MissingPhoneCalls
  30. SELECT
  31.     CAST([oktell].[dbo].[A_Stat_MissedCalls].TimeStart AS DATE)
  32.     ,COUNT(*)
  33. FROM
  34.   [oktell].[dbo].[A_Stat_Connections_1x1]
  35.   INNER JOIN
  36.   [oktell].[dbo].[A_Stat_MissedCalls]
  37.     ON [oktell].[dbo].[A_Stat_Connections_1x1].IdChain = [oktell].[dbo].[A_Stat_MissedCalls].IdChain
  38.     GROUP BY CAST([oktell].[dbo].[A_Stat_MissedCalls].TimeStart AS DATE)
  39.  
  40. --Сохраняем в переменную неудачные звонки
  41. INSERT INTO @FailedPhoneCalls
  42. SELECT
  43.     CAST([oktell].[dbo].[A_Stat_FailedCalls].TimeStart AS DATE)
  44.     ,COUNT(*)
  45. FROM
  46.   [oktell].[dbo].[A_Stat_Connections_1x1]
  47.   INNER JOIN
  48.   [oktell].[dbo].[A_Stat_FailedCalls]
  49.     ON [oktell].[dbo].[A_Stat_Connections_1x1].IdChain = [oktell].[dbo].[A_Stat_FailedCalls].IdChain
  50.     GROUP BY CAST([oktell].[dbo].[A_Stat_FailedCalls].TimeStart AS DATE)
  51.  
  52. --Сохраняем в промежуточную переменную - входящие, исходящие и пропущенные
  53. INSERT INTO @ThreePhoneCalls
  54. SELECT [@In_Out_Calls].Date_
  55.     ,Outcoming_Calls
  56.     ,Incoming_Calls
  57.     ,[@MissingPhoneCalls].Missing_Calls
  58. FROM
  59.   @In_Out_Calls
  60.   LEFT JOIN
  61.   @MissingPhoneCalls
  62.     ON [@In_Out_Calls].Date_= [@MissingPhoneCalls].Date_
  63.  
  64. --Сохраняем в промежуточную переменную - входящие, исходящие, пропущенные и неудачные
  65. INSERT INTO @AllCalls
  66. SELECT [@ThreePhoneCalls].Date_
  67.     ,Outcoming_Calls
  68.     ,Incoming_Calls
  69.     ,Missing_Calls
  70.     ,[@FailedPhoneCalls].Failed_Calls
  71. FROM
  72.   @ThreePhoneCalls
  73.   LEFT JOIN
  74.   @FailedPhoneCalls
  75.     ON [@ThreePhoneCalls].Date_= [@FailedPhoneCalls].Date_
  76.  
  77. --SELECT *
  78. --FROM @AllCalls
  79.  
  80. --сохранение операторов в переменную
  81. INSERT INTO @Operators
  82. SELECT [oktell_settings].[dbo].[A_Users].Name
  83.     ,[oktell_settings].[dbo].[A_Users].ID
  84.     ,CAST(TimeStart AS DATE) AS Date_
  85. FROM
  86.   [oktell].[dbo].[A_Stat_Connections_1x1]
  87.   INNER JOIN
  88.   [oktell_settings].[dbo].[A_Users]
  89.     ON [oktell].[dbo].[A_Stat_Connections_1x1].BUserId = [oktell_settings].[dbo].[A_Users].ID
  90.     GROUP BY [oktell_settings].[dbo].[A_Users].Name, [oktell_settings].[dbo].[A_Users].ID, CAST(TimeStart AS DATE)
  91.  
  92. --Вывод таблицы с операторами и звонками
  93. SELECT Operator
  94.     ,ID
  95.     ,[@AllCalls].Date_
  96.     ,Outcoming_Calls
  97.     ,Incoming_Calls
  98.     ,Missing_Calls
  99.     ,Failed_Calls
  100. FROM @Operators
  101.     INNER JOIN
  102.     @AllCalls
  103.     ON [@AllCalls].Date_ = [@Operators].Date_
  104.     --Проверка даты
  105.     WHERE [@AllCalls].Date_ >= @DATE_START AND [@AllCalls].Date_ <= @DATE_END
  106.         AND NOT EXISTS (SELECT Id FROM @USERS WHERE [@USERS].Id = [@Operators].Id)
  107.     ORDER BY [@AllCalls].Date_
Advertisement
Add Comment
Please, Sign In to add comment