Advertisement
WorkAkkaunt

Отделы по интервалам ЦМД

Jul 18th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.73 KB | None | 0 0
  1. /*
  2. DECLARE @dt1 DATETIME =  '02-01-2019 00:00:00.001'
  3. DECLARE @dt2 DATETIME =  '02-18-2019 23:59:59.990'
  4. declare @interval int = 2
  5. declare @gr int = 0
  6. */
  7.  
  8. /*select 1, 'По часам'
  9. union all
  10. select 2, 'По дням'
  11. union all
  12. select 3, 'По 15 минут'
  13. union all
  14. select 4, 'По 30 минут'*/
  15.  
  16.  
  17. declare @intMin int
  18. select @intMin = case @interval
  19.     when 1 then 60
  20.     when 2 then 1440
  21.     when 3 then 15
  22.     when 4 then 30
  23. end
  24.  
  25. declare @group table (id uniqueidentifier)
  26.  
  27. if (@gr=0)
  28. begin
  29. delete @group
  30.  
  31. insert into @group
  32. select id from [oktell_settings].[dbo].[A_Users]
  33. where name in ('Сапрыкин Иван','Черкасов Станислав','Чухустов Андрей')
  34. end
  35.  
  36. if (@gr=1)
  37. begin
  38. delete @group
  39.  
  40. insert into @group
  41. select id from [oktell_settings].[dbo].[A_Users]
  42. where name in (
  43. 'Самойлова Ольга/Струкова Светлана',
  44. 'Ананьева Татьяна/Гальцева Ольга',
  45. 'Бабакина Ольга/Шукаева Ирина',
  46. 'Муравьева Елена/Мохнатова Екатерина',
  47. 'Буданова Ольга/ Бузнакова Елена',
  48. 'Черепова Анна/Белова Ирина',
  49. 'Кленова Лариса/Яковчик Ольга',
  50. 'Лукьянова Виктория/ Колганова Влада',
  51. 'Мазанова Анна/Горланова Елизавета',
  52. 'Коньшина Мария/Скробот Екатерина',
  53. 'Зайченко Анна/Алексеенко Евгения',
  54. 'Зайченко Анна/Алексеенко Евгения',
  55. 'Антонова Ольга/Елдышева Мария',
  56. 'Емельянова Наталья/Наумова Татьяна',
  57. 'Грицкевич Мария/Дильман Яна',
  58. 'Дронова Оксана/Чудакова Евгения',
  59. 'Супранова Надежда')
  60. end
  61.  
  62. if (@gr=2)
  63. begin
  64. delete @group
  65.  
  66. insert into @group
  67. select id from [oktell_settings].[dbo].[A_Users]
  68. where name in (
  69. '6600',
  70. 'Врач консультант 1',
  71. 'Врач консультант 2',
  72. '8104',
  73. '8122',
  74. '8123')
  75. end
  76.  
  77. if (@gr=3)
  78. begin
  79. delete @group
  80.  
  81. insert into @group
  82. select id from [oktell_settings].[dbo].[A_Users]
  83. where name in (
  84. 'Файнгерц Борис',
  85. 'Апаршева Кристина',
  86. 'Дзюба Елена',
  87. 'Цукан Альбина')
  88. end
  89.  
  90. if (@gr=4)
  91. begin
  92. delete @group
  93.  
  94. insert into @group
  95. select id from [oktell_settings].[dbo].[A_Users]
  96. where name in (
  97. 'Чукичева Ольга Витальевна',
  98. 'Резникова Людмила Алексеевна',
  99. 'Кириллова Наталья Петровна',
  100. 'Соколова Людмила Валерьевна',
  101. 'Розинкевич Анна Викторовна',
  102. 'Маслова Елена Владимировна',
  103. 'Козлова Анна Геннадьевна',
  104. 'Лапшина Ярослава Евгеньевна',
  105. 'Яковлева Людмила Дмитриевна',
  106. 'Гальченко Анна Олеговна',
  107. 'Игнатова Анжелика Александровна 1',
  108. 'Вострикова Ирина Александровна',
  109. 'Демьяненко Оксана Юрьевна',
  110. 'Назарова Татьяна Владимировна',
  111. 'Смирных Елена Леонидовна',
  112. 'Князева Мария Валерьевна',
  113. 'Дмуховская Юлия Валерьевна',
  114. 'Целовальникова Наталья Алексеевна',
  115. 'Погорелова Софья Валерьевна',
  116. 'Абрамова Наталья',
  117. 'Копеева Оксана Владимировна',
  118. 'Невзорова Алия Наримовна',
  119. 'Кнутова Юлия Николаевна',
  120. 'Савиных Полина Андреевна',
  121. 'Цыплухина Елена Фаритовна')
  122. end
  123.  
  124. if (@gr=5)
  125. begin
  126. delete @group
  127.  
  128. insert into @group
  129. select id from [oktell_settings].[dbo].[A_Users]
  130. where name in (
  131. '2805',
  132. 'Петрова Светлана',
  133. '8110',
  134. '8107',
  135. '2800',
  136. '2835',
  137. '2806')
  138. end
  139.  
  140. if (@gr=6)
  141. begin
  142. delete @group
  143.  
  144. insert into @group
  145. select id from [oktell_settings].[dbo].[A_Users]
  146. where name in (
  147. 'Мутовкин Константин Олегович',
  148. 'Козачек Алексей Сергеевич',
  149. 'Опалев Павел Александрович',
  150. 'Купянский Артем Васильевич',
  151. 'Фадеев Роман Константинович',
  152. 'Вяземский Евгений Олегович',
  153. 'Палевич Юрий',
  154. 'Шкаликов Дмитрий Валерьевич',
  155. 'Щербачев Вячеслав Владимирович',
  156. 'Лаптев Антон Васильевич',
  157. 'Саламандык Андрей Сергеевич',
  158. 'Кузнецов Игорь Александрович',
  159. 'Гумов Астемир Асланович',
  160. 'Евстифеев Евгений Анатольевич')
  161. end
  162. --select * from @group
  163.  
  164. DECLARE @ConnectionIdChains TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), lenq int, lentime int, timestart datetime)
  165.  
  166. INSERT INTO @ConnectionIdChains (IdChain, BUserId, Name, lenq, lentime, timestart)
  167.  
  168. SELECT IdChain, [BUserId], [Name].[Name], datediff(SS, TimeStart, TimeAnswer) , datediff(ss, TimeAnswer, TimeStop) , TimeStart
  169. FROM [oktell].[dbo].[A_Stat_Connections_1x1] AS CON3 WITH (NOLOCK)
  170. LEFT JOIN [oktell].[dbo].[A_Users] AS [Name]
  171. ON CON3.[BUserId] = [Name].ID
  172. WHERE BUserId IN (SELECT [Id] FROM @group)
  173.         AND TimeStart BETWEEN @dt1 AND @dt2    
  174.         AND ([ConnectionType] = 5)
  175. GROUP BY IdChain, [BUserId], [Name], datediff(ss, TimeStart, TimeAnswer) , datediff(ss, TimeAnswer, TimeStop), TimeStart
  176.  
  177. --select * from @ConnectionIdChains
  178.  
  179. DECLARE @MissedIdChains TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), timestart datetime)
  180.  
  181. INSERT INTO @MissedIdChains (IdChain, BUserId, Name, timestart)
  182.  
  183. SELECT IdChain, [BUserId], [Name].[Name],TimeStart
  184. FROM [oktell].[dbo].[A_Stat_MissedCalls] AS CON3 WITH (NOLOCK)
  185. LEFT JOIN [oktell].[dbo].[A_Users] AS [Name]
  186. ON CON3.[BUserId] = [Name].ID
  187. WHERE BUserId IN (SELECT [Id] FROM @group)
  188.         AND TimeStart BETWEEN @dt1 AND @dt2
  189. GROUP BY IdChain, [BUserId], [Name], TimeStart
  190.  
  191. --select * from @MissedIdChains
  192.  
  193. DECLARE @Result TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), FlagAccepting INT, FlagMissed INT, lenq int, lentime int, timestart datetime)
  194.  
  195. INSERT INTO @Result (IdChain, BUserId, Name, FlagAccepting, FlagMissed, timestart)
  196. SELECT IdChain, BUserId, Name, '0', '1', timestart
  197. FROM @MissedIdChains
  198.  
  199. INSERT INTO @Result (IdChain, BUserId, Name, FlagAccepting, FlagMissed, lenq, lentime, timestart)
  200. SELECT IdChain, BUserId, Name, '1', '0', lenq, lentime, timestart
  201. FROM @ConnectionIdChains
  202.  
  203.  
  204. select case @interval
  205.             when 1 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(hh,1,[time]),108)
  206.             when 2 then convert(nvarchar(5),[time],4) + ' ' + cast(datepart(yy,[time]) as nvarchar(4)) -- + ' г.'
  207.             when 3 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(mi,15,[time]),108)
  208.             when 4 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(mi,30,[time]),108)
  209.         end time
  210.         ,count(*) [Всего]
  211.         , sum(FlagAccepting) [Принято]
  212.         , sum(FlagMissed) [Пропущено]
  213.         , oktell.dbo.GetTimeFromSecond( round(avg(lenq),0)) [Ср. время ож.]
  214.         , oktell.dbo.GetTimeFromSecond( round(avg(lentime),0))  [Ср. дл. (успешных)] from (
  215.         select *, case when @interval in (1,3,4) then DATEADD(mi, DATEDIFF(mi, '19000101', TimeStart)/@intMin*@intMin, '19000101')
  216.             when @interval = 2 then cast(floor(cast (timestart as float)) as datetime)
  217.              end time from @Result) t
  218. group by time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement