Advertisement
WorkAkkaunt

Индивидуальная статистика v2 New

Aug 1st, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 16.62 KB | None | 0 0
  1. -- пока фильтры только на время
  2. /*
  3. 25.09.2018 Казанцев В.С. Добавлены 2 специальных кусочка, для задач B2B VIP + исходящие. Везде увеличено счетчики задач с 15 до 17.
  4. В последнем динамическом запросе не уверен в значениях @i and @j, их не менял.
  5. */
  6. /*
  7. declare @DateStart datetime;
  8. declare @DateStop  datetime;
  9. declare @TimeStart datetime;
  10. declare @TimeStop  datetime;
  11. declare @Operators table (id uniqueidentifier)
  12. declare @TypeTime bit = 'False'
  13. declare @TypeReport nvarchar(250)
  14.     select 1, 'к каждой дате'
  15.     union all
  16.     select 2, 'к дате начала и конца'
  17.  
  18. declare @TASK_LIST table (id uniqueidentifier)
  19.  
  20. insert into @TASK_LIST select ID from A_TaskManager_Tasks
  21.  
  22. set @DateStart = '2018-09-17 00:00:00.000'
  23. set @DateStop  = '2018-09-17 23:59:59.000'
  24. set @TimeStart = '1900-01-01 08:00:00.000'
  25. set @TimeStop  = '1900-01-01 23:59:59.000'
  26.  
  27. insert into @Operators
  28. select ID from A_Users
  29. */
  30. --values ('24E8D331-FE51-465D-B17D-2520E3F6D350')
  31. --insert into @Operators
  32. --values ('F714AD6F-A6FD-480B-B09B-194C19D75056')
  33.  
  34. declare @TempTime datetime;
  35.  
  36. if (@TimeStop = '1900-01-01 23:59:00.000')
  37. set @TimeStop = '1900-01-01 23:59:59.999'
  38.  
  39. if (@TypeTime = 'True')
  40. begin
  41.     set @TempTime = @TimeStart;
  42.     set @TimeStart = @TimeStop;
  43.     set @TimeStop = @TempTime;
  44. end
  45.  
  46.  
  47. if (@TypeReport is null)
  48.    
  49. set @TypeReport = 1;
  50.  
  51.  
  52. declare @idchain table(idchain uniqueidentifier)
  53. declare @allcalls table(idchain uniqueidentifier, idtask uniqueidentifier, idoperator uniqueidentifier, state int,[ANSWER] INT)
  54. declare @groupcalls table (idoperator uniqueidentifier, idtask uniqueidentifier, Increase int, Accept int, Lose int,[ANSWER] INT)
  55. create table #result (idoperator uniqueidentifier
  56. ,I1 int,A1 int,L1 int,T1 INT
  57. ,I2 int,A2 int,L2 int,T2 INT
  58. ,I3 int,A3 int,L3 int,T3 INT
  59. ,I4 int,A4 int,L4 int,T4 INT
  60. ,I5 int,A5 int,L5 int,T5 INT
  61. ,I6 int,A6 int,L6 int,T6 INT
  62. ,I7 int,A7 int,L7 int,T7 INT
  63. ,I8 int,A8 int,L8 int,T8 INT
  64. ,I9 int,A9 int,L9 int,T9 INT
  65. ,I10 int,A10 int,L10 int,T10 INT
  66. ,I11 int,A11 int,L11 int,T11 INT
  67. ,I12 int,A12 int,L12 int,T12 INT
  68. ,I13 int,A13 int,L13 int,T13 INT
  69. ,I14 int,A14 int,L14 int,T14 INT
  70. ,I15 int,A15 int,L15 int,T15 INT
  71. ,I16 int,A16 int,L16 int,T16 INT
  72. ,I17 int,A17 int,L17 int,T17 INT
  73. );
  74. declare @Tasks table (ind1 int IDENTITY(1,1) PRIMARY KEY, ind nvarchar(2), id uniqueidentifier, name nvarchar(250), sum int)
  75. declare @State table (ind int, name nvarchar(250), s nvarchar(2))
  76.  
  77. insert into @Tasks(ind,id,name,sum)
  78. select SUBSTRING(B.Name, 1, 1), B.id, SUBSTRING(B.Name, 3, LEN(B.Name) - 3), 0
  79. from oktell..tbl_Dashbord as A
  80. left outer join oktell_cc_temp..A_Cube_CC_Cat_Task as B
  81. on A.TaskID = B.id
  82.  
  83. /*специальный кусочек для задачи User-Class Courier, т.к. ее нету в дашбордах*/
  84. insert into @Tasks(ind,id,name,sum)
  85. select MAX(ind)+1, '39AC2F24-1E7D-4D98-9EB0-29270A05D53C', 'Исходящие звонки B2B VIP',0 from @Tasks
  86. /*конец кусочка*/
  87.  
  88. /*специальный кусочек для задачи User-Class Courier, т.к. ее нету в дашбордах*/
  89. insert into @Tasks(ind,id,name,sum)
  90. select MAX(ind)+1, '63C1876A-2FC0-4A62-8B16-B0515D20A5D1', 'B2B VIP',0 from @Tasks
  91. /*конец кусочка*/
  92.  
  93. /*специальный кусочек для задачи User-Class Courier, т.к. ее нету в дашбордах*/
  94. insert into @Tasks(ind,id,name,sum)
  95. select MAX(ind)+1, '1978EA8D-1838-4CF0-B5EE-70AEC7C88315', 'User-Class Courier',0 from @Tasks
  96. /*конец кусочка*/
  97.  
  98. /*специальный кусочек для задачи B2B in ride, т.к. ее нету в дашбордах*/
  99. insert into @Tasks(ind,id,name,sum)
  100. select MAX(ind)+1, '1E7BA857-4A1A-4E76-98B0-24273C1120C7', 'B2B in ride',0 from @Tasks
  101. /*конец кусочка*/
  102.  
  103. /*специальный кусочек для задачи Driver-Class Courier, т.к. ее нету в дашбордах*/
  104. insert into @Tasks(ind,id,name,sum)
  105. select MAX(ind)+1, '319EC8C2-FE14-4C6C-AFA2-01FCBC718C14', 'Driver-Class Courier',0 from @Tasks
  106. /*конец кусочка*/
  107.  
  108. /*специальный кусочек для задачи Driver-Class Courier reserve, т.к. ее нету в дашбордах*/
  109. insert into @Tasks(ind,id,name,sum)
  110. select MAX(ind)+1, '6830E035-0316-4799-9034-6CBBD6D89C4E', 'Driver-Class Courier reserve',0 from @Tasks
  111. /*конец кусочка*/
  112.  
  113. /*специальный кусочек для задачи B2C In ride, т.к. ее нету в дашбордах*/
  114. insert into @Tasks(ind,id,name,sum)
  115. select MAX(ind)+1, 'D69A7932-9761-44A4-8B03-E3BFD8577557', 'B2C In ride',0 from @Tasks
  116. /*конец кусочка*/
  117.  
  118. /*специальный кусочек для задачи B2C Not in ride, т.к. ее нету в дашбордах*/
  119. insert into @Tasks(ind,id,name,sum)
  120. select MAX(ind)+1, 'B4CDB351-343C-4854-B024-090ED195F31C', 'B2C Not in ride',0 from @Tasks
  121. /*конец кусочка*/
  122.  
  123. /*специальный кусочек для задачи B2D in corp ride, т.к. ее нету в дашбордах*/
  124. insert into @Tasks(ind,id,name,sum)
  125. select MAX(ind)+1, 'BBC7F13A-B219-413B-A8A3-4FC6D1325EC0', 'B2D in corp ride',0 from @Tasks
  126. /*конец кусочка*/
  127.  
  128. /*специальный кусочек для задачи B2D Premium, т.к. ее нету в дашбордах*/
  129. insert into @Tasks(ind,id,name,sum)
  130. select MAX(ind)+1, '9DC79009-F8B6-4EF7-B405-98BE950C5B72', 'B2D Premium',0 from @Tasks
  131. /*конец кусочка*/
  132.  
  133. /*специальный кусочек для задачи B2D Night, т.к. ее нету в дашбордах*/
  134. insert into @Tasks(ind,id,name,sum)
  135. select MAX(ind)+1, '4AB8D485-4F73-4F6B-B4A5-AAB8F2B3C1A7', 'B2D Night',0 from @Tasks
  136. /*конец кусочка*/
  137.  
  138.  
  139.  
  140. insert into @State
  141. values(1, 'Поступило', 'I')
  142. insert into @State
  143. values(2, 'Принято', 'A')
  144. insert into @State
  145. values(3, 'Пропущенно', 'L')
  146. insert into @State
  147. values(4, ' Ср. Время овтета(сек)', 'T')
  148.  
  149. if(@TypeReport=1)
  150. begin
  151.     insert into @idchain
  152.     select distinct idchain from oktell..A_Stat_Connections_1x1
  153.     where
  154.         cast(TimeStart as date) between @DateStart and @DateStop
  155.     and
  156.         cast(cast(A_Stat_Connections_1x1.TimeStart as time)as datetime) between @TimeStart and @TimeStop
  157.     and ConnectionType in (4, 7) and IdPrev is null and FROMCC = 1 
  158. end
  159. else
  160. begin
  161.     insert into @idchain
  162.     select distinct idchain from oktell..A_Stat_Connections_1x1
  163.     where
  164.  
  165.     TimeStart between (cast(@DateStart as date) + @TimeStart) and
  166.   (cast(@DateStop as date) + @TimeStop)
  167.     and ConnectionType in (4, 7) and IdPrev is null and FROMCC = 1 
  168. end
  169.    
  170. insert into @allcalls (idoperator, idtask, idchain, state,[ANSWER])
  171. select IdOperator, idtask, IdChain
  172.     ,max(case when CallResult in (1,5) then 1 else 0 end)
  173.     ,(SELECT  TOP(1) DATEDIFF(SS,[TimeStart],[TimeAnswer]) FROM [oktell].[dbo].[A_Stat_Connections_1x1]  AS [A_Stat_Connections_1x1] WHERE [A_Stat_Connections_1x1].[IdChain] = A_Cube_CC_EffortConnections.IdChain AND [A_Stat_Connections_1x1].[ConnectionType] IN (1,5) )
  174. from oktell_cc_temp..A_Cube_CC_EffortConnections AS A_Cube_CC_EffortConnections
  175. where
  176.     IdChain in (select IdChain from @idchain)
  177. and
  178.     IdOperator is not null and IdOperator <> 'AB000000-0000-0000-0000-000000000000' and IdOperator <> 'BF000000-0000-0000-0000-000000000000'
  179. and
  180.     IdOperator in (select ID from @Operators)
  181. and
  182.     IdTask in (select id from @TASK_LIST)
  183. group by IdOperator, IdChain, IdTask   
  184.  
  185.  
  186.  
  187. insert into @groupcalls
  188. select idoperator, idtask, isnull(COUNT(*),0), isnull(SUM(state),0), isnull(COUNT(*),0) - isnull(SUM(state),0),case when isnull(SUM(state),0) >0 then SUM(isnull([ANSWER],0))/isnull(SUM(state),0) else 0 end
  189. from @allcalls
  190. group by idtask, idoperator
  191.  
  192. insert into #result (idoperator,
  193.                     I1, A1, L1, T1,
  194.                     I2, A2, L2, T2,
  195.                     I3, A3, L3, T3,
  196.                     I4, A4, L4, T4,
  197.                     I5, A5, L5, T5,
  198.                     I6, A6, L6, T6,
  199.                     I7, A7, L7, T7,
  200.                     I8, A8, L8, T8,
  201.                     I9, A9, L9, T9,
  202.                     I10, A10, L10, T10,
  203.                     I11, A11, L11, T11,
  204.                     I12, A12, L12, T12,
  205.                     I13, A13, L13, T13,
  206.                     I14, A14, L14, T14,
  207.                     I15, A15, L15, T15,
  208.                     I16, A16, L16, T16,
  209.                     I17, A17, L17, T17
  210. )
  211. select A.id,
  212. isnull(Task1.Increase, 0), isnull(Task1.Accept, 0), isnull(Task1.Lose, 0),ISNULL(Task1.[ANSWER],0),
  213. isnull(Task2.Increase, 0), isnull(Task2.Accept, 0), isnull(Task2.Lose, 0),ISNULL(Task2.[ANSWER],0),
  214. isnull(Task3.Increase, 0), isnull(Task3.Accept, 0), isnull(Task3.Lose, 0),ISNULL(Task3.[ANSWER],0),
  215. isnull(Task4.Increase, 0), isnull(Task4.Accept, 0), isnull(Task4.Lose, 0),ISNULL(Task4.[ANSWER],0),
  216. isnull(Task5.Increase, 0), isnull(Task5.Accept, 0), isnull(Task5.Lose, 0),ISNULL(Task5.[ANSWER],0),
  217. isnull(Task6.Increase, 0), isnull(Task6.Accept, 0), isnull(Task6.Lose, 0),ISNULL(Task6.[ANSWER],0),
  218. isnull(Task7.Increase, 0), isnull(Task7.Accept, 0), isnull(Task7.Lose, 0),ISNULL(Task7.[ANSWER],0),
  219. isnull(Task8.Increase, 0), isnull(Task8.Accept, 0), isnull(Task8.Lose, 0),ISNULL(Task8.[ANSWER],0),
  220. isnull(Task9.Increase, 0), isnull(Task9.Accept, 0), isnull(Task9.Lose, 0),ISNULL(Task9.[ANSWER],0),
  221. isnull(Task10.Increase, 0), isnull(Task10.Accept, 0), isnull(Task10.Lose, 0),ISNULL(Task10.[ANSWER],0),
  222. isnull(Task11.Increase, 0), isnull(Task11.Accept, 0), isnull(Task11.Lose, 0),ISNULL(Task11.[ANSWER],0),
  223. isnull(Task12.Increase, 0), isnull(Task12.Accept, 0), isnull(Task12.Lose, 0),ISNULL(Task12.[ANSWER],0),
  224. isnull(Task13.Increase, 0), isnull(Task13.Accept, 0), isnull(Task13.Lose, 0),ISNULL(Task13.[ANSWER],0),
  225. isnull(Task14.Increase, 0), isnull(Task14.Accept, 0), isnull(Task14.Lose, 0),ISNULL(Task14.[ANSWER],0),
  226. isnull(Task15.Increase, 0), isnull(Task15.Accept, 0), isnull(Task15.Lose, 0),ISNULL(Task15.[ANSWER],0),
  227. isnull(Task16.Increase, 0), isnull(Task16.Accept, 0), isnull(Task16.Lose, 0),ISNULL(Task16.[ANSWER],0),
  228. isnull(Task17.Increase, 0), isnull(Task17.Accept, 0), isnull(Task17.Lose, 0),ISNULL(Task17.[ANSWER],0)
  229.  
  230. from @Operators as A
  231. left outer join
  232.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  233.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 1))
  234.      as [Task1]
  235.      on A.id = Task1.idoperator
  236. left outer join
  237.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  238.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 2))
  239.      as [Task2]
  240.      on A.id = Task2.idoperator
  241. left outer join
  242.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  243.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 3))
  244.      as [Task3]
  245.      on A.id = Task3.idoperator
  246. left outer join
  247.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  248.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 4))
  249.      as [Task4]
  250.      on A.id = Task4.idoperator
  251. left outer join
  252.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  253.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 5))
  254.      as [Task5]
  255.      on A.id = [Task5].idoperator
  256. left outer join
  257.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  258.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 6))
  259.      as [Task6]
  260.      on A.id = [Task6].idoperator
  261. left outer join
  262.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  263.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 7))
  264.      as [Task7]
  265.      on A.id = [Task7].idoperator
  266. left outer join
  267.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  268.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 8))
  269.      as [Task8]
  270.      on A.id = [Task8].idoperator  
  271. left outer join
  272.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  273.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 9))
  274.      as [Task9]
  275.      on A.id = [Task9].idoperator
  276. left outer join
  277.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  278.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 10))
  279.      as [Task10]
  280.      on A.id = [Task10].idoperator
  281. left outer join
  282.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  283.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 11))
  284.      as [Task11]
  285.      on A.id = [Task11].idoperator
  286. left outer join
  287.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  288.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 12))
  289.      as [Task12]
  290.      on A.id = [Task12].idoperator
  291. left outer join
  292.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  293.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 13))
  294.      as [Task13]
  295.      on A.id = [Task13].idoperator
  296. left outer join
  297.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  298.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 14))
  299.      as [Task14]
  300.      on A.id = [Task14].idoperator
  301. left outer join
  302.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  303.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 15))
  304.      as [Task15]
  305.      on A.id = [Task15].idoperator
  306. left outer join
  307.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  308.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 16))
  309.      as [Task16]
  310.      on A.id = [Task16].idoperator
  311. left outer join
  312.     (select B.idoperator as [idoperator], B.Increase as [Increase], B.Accept as [Accept], B.Lose as [Lose],B.[ANSWER] AS [ANSWER]
  313.      from @groupcalls as B where B.idtask = (select id from @Tasks where ind1 = 17))
  314.      as [Task17]
  315.      on A.id = [Task17].idoperator
  316.      
  317.  
  318. delete from #result
  319. where I1 + I2 + I3 + I4 + I5 + I6 + I7 + I8 + I9 + I10 + I11 + I12 + I13 + I14 + I15 + I16 + I17
  320.     + A1 + A2 + A3 + A4 + A5 + A6 + A7 + A8 + A9 + A10 + A11 + A12 + A13 + A14 + A15 + A16+ A17
  321.     + L1 + L2 + L3 + L4 + L5 + L6 + L7 + L8 + L9 + L10 + L11 + L12 + L13 + L14 + L15 + L16 + L17 = 0
  322.  
  323. update @Tasks
  324. set sum = isnull((select sum(Increase) from @groupcalls where idtask = A.id),0)
  325. from @Tasks as A
  326.  
  327. declare @SQLText nvarchar(MAX);
  328. declare @Name1 nvarchar(250);
  329. declare @Name2 nvarchar(250);
  330. declare @s nvarchar(4);
  331. declare @i int;
  332. declare @j int;
  333. set @i = 1;
  334. set @j = 1;
  335. declare @sum int;
  336. DECLARE @COUNT INT
  337.  
  338. SET @COUNT = (SELECT COUNT(*) FROM @TASK_LIST)
  339.  
  340. set @SQLText = 'select B.Name as ''Менеджер'',';
  341. IF (SELECT COUNT(*) FROM @TASK_LIST) <17
  342. BEGIN
  343. while (@i <= 6)
  344. begin
  345.     set @j = 1;
  346.     select @Name1 = Name, @sum = sum from @Tasks where ind1 = @i
  347.     if (@sum > 0)
  348.     begin
  349.     while (@j <= 7)
  350.     begin
  351.         select @Name2 = Name, @s = s from @State where ind = @j;
  352.         set @SQLText = @SQLText + 'A.' + @s + cast(@i as nvarchar(2)) + ' as ''' + @Name1 + '
  353. ' + @Name2 + ''','
  354.         set @j = @j + 1;   
  355.     end
  356.     end
  357.     set @i = @i + 1;
  358. end
  359. END
  360. set @SQLText = @SQLText + '
  361. A.I1 + A.I2 + A.I3 + A.I4+A.I5 + A.I6 + A.I7 + A.I8 + A.I9 + A.I10 + A.I11 + A.I12 + A.I13 + A.I14 + A.I15 + A.I16 + A.I17 as ''Итого
  362. Поступило'',
  363. A.A1 + A.A2 + A.A3 + A.A4 + A.A5 + A.A6 + A.A7 + A.A8 + A.A9 + A.A10 + A.A11 + A.A12 + A.A13 + A.A14 + A.A15 + A.A16 + A.A17 as ''Итого
  364. Принято'',
  365. A.L1 + A.L2 + A.L3 + A.L4 + A.L5 + A.L6 + A.L7 + A.L8 + A.L9 + A.L10 + A.L11 + A.L12 + A.L13 + A.L14 + A.L15 + A.L16 + A.L17 as ''Итого
  366. Пропущенно'',
  367. (A.T1 + A.T2 + A.T3 + A.T4 + A.T5 + A.T6 + A.T7 + A.T8 + A.T9 + A.T10 + A.T11 + A.T12 + A.T13 + A.T14 + A.T15 + A.T16 + A.T17)/'+CAST(@COUNT AS NVARCHAR(10))+' AS [Итого среднее время ответа]
  368. from
  369.     #result as A
  370. left outer join
  371.     oktell..A_Users as B
  372. on A.idoperator = B.id'
  373.  
  374. exec (@SQLText)
  375.  
  376.  
  377. drop table #result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement