Advertisement
WorkAkkaunt

Отделы по интервалам цмд дристня

Jul 19th, 2019
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.90 KB | None | 0 0
  1. DECLARE @dt1 DATETIME =  '07-18-2019 00:00:00.001'
  2. DECLARE @dt2 DATETIME =  '07-19-2019 23:59:59.990'
  3. declare @interval int = 2
  4. declare @gr int = 0
  5. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  6.  
  7. declare @gr2 uniqueidentifier
  8. select @gr2 = case @gr
  9.     when 0 then '38249813-A25B-4DF5-9818-015F485AE480'
  10.     when 1 then '1BB684F3-40AC-4685-9C35-20A7CAF2E205'
  11.     when 2 then 'DEA0C168-129D-4F55-BD28-18FD69F90058'
  12.     when 3 then '218F7056-F250-4C38-878E-65A9072A152E'
  13.     when 4 then '60439EA5-25B8-44BB-A24F-B12AAC46362C'
  14.     when 5 then 'C95E4E86-F887-4E1E-B644-BB479BBE8CD2'
  15.     when 6 then '59F2FDA7-8CEE-4D74-A21A-DAA899678383'
  16. end
  17.  
  18. declare @intMin int
  19. select @intMin = case @interval
  20.     when 1 then 60
  21.     when 2 then 1440
  22.     when 3 then 15
  23.     when 4 then 30
  24. end
  25.  
  26. declare @group table (id uniqueidentifier)
  27.  
  28. insert into @group
  29. select ID from [oktell_settings].[dbo].[A_Users]
  30. where ParentGroupID = @gr2
  31.  
  32. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
  33. ---------ПРИНЯТО------------
  34. ----------------------------
  35.  
  36. DECLARE @ConnectionIdChains TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), lenq int, lentime int, timestart datetime, GroupId uniqueidentifier)
  37.  
  38. INSERT INTO @ConnectionIdChains (IdChain, BUserId, Name, lenq, lentime, timestart, [A_Groups].GroupId)
  39.  
  40. SELECT IdChain, [BUserId], AU.[Name], datediff(SS, TimeStart, TimeAnswer) , datediff(ss, TimeAnswer, TimeStop) , TimeStart, [A_Groups].ID
  41. FROM [oktell].[dbo].[A_Stat_Connections_1x1] AS CON3 WITH (NOLOCK)
  42. LEFT JOIN [oktell].[dbo].[A_Users] AS AU
  43. ON CON3.[BUserId] = AU.ID
  44. LEFT JOIN [oktell].[dbo].[A_Groups] AS [A_Groups]
  45. ON AU.ParentGroupID = [A_Groups].ID
  46. WHERE BUserId IN (SELECT [Id] FROM @group)
  47.         AND TimeStart BETWEEN @dt1 AND @dt2    
  48.         AND ([ConnectionType] = 5)
  49. GROUP BY IdChain, [BUserId], AU.[Name], datediff(ss, TimeStart, TimeAnswer) , datediff(ss, TimeAnswer, TimeStop), TimeStart, [A_Groups].ID
  50.  
  51. --select * from @ConnectionIdChains
  52. ----------------------------------------------------------------------------------------
  53. ---------ПРОПУЩЕННО------------
  54. -------------------------------
  55. DECLARE @MissedIdChains TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), timestart datetime)
  56.  
  57. INSERT INTO @MissedIdChains
  58.  
  59. SELECT [MissedCalls].IdChain
  60.     , NULL, NULL
  61.     --,US.ID
  62.     --,US.[Name]
  63.     ,(SELECT TOP 1 TimeStart FROM [oktell].[dbo].[A_Stat_Connections_1x1] AS sc1 WITH (NOLOCK) where sc1.IdChain=[MissedCalls].IdChain ORDER BY TimeStart)
  64. FROM [oktell].[dbo].[A_Stat_MissedCalls] AS [MissedCalls] WITH (NOLOCK)
  65. LEFT JOIN [oktell].[dbo].[A_Users] AS US
  66.     ON [MissedCalls].[BUserId] = US.ID
  67. LEFT JOIN [oktell].[dbo].[A_Groups] AS [A_Groups]
  68.     ON US.ParentGroupID = [A_Groups].ID
  69. LEFT JOIN @ConnectionIdChains AS Accepted
  70.     ON ([MissedCalls].[IdChain] = Accepted.IdChain AND [A_Groups].ID = Accepted.GroupId)
  71. WHERE [MissedCalls].BUserId IN (SELECT [Id] FROM @group)
  72.         AND [MissedCalls].TimeStart BETWEEN @dt1 AND @dt2
  73.         AND [A_Groups].ID IS NOT NULL
  74.         AND Accepted.IdChain IS NULL
  75. GROUP BY [MissedCalls].IdChain--, [MissedCalls].[BUserId], US.[Name]
  76.  
  77. ------------------------------------------------------------------------------------------------
  78.  
  79. DECLARE @Result TABLE (IdChain UNIQUEIDENTIFIER, BUserId UNIQUEIDENTIFIER, Name NVARCHAR(250), FlagAccepting INT, FlagMissed INT, lenq int, lentime int, timestart datetime)
  80.  
  81. INSERT INTO @Result (IdChain, BUserId, Name, FlagAccepting, FlagMissed, timestart)
  82. SELECT IdChain, BUserId, Name, '0', '1', timestart
  83. FROM @MissedIdChains
  84.  
  85. INSERT INTO @Result (IdChain, BUserId, Name, FlagAccepting, FlagMissed, lenq, lentime, timestart)
  86. SELECT IdChain, BUserId, Name, '1', '0', lenq, lentime, timestart
  87. FROM @ConnectionIdChains
  88.  
  89. --select * from @Result
  90.  
  91.  
  92. select case @interval
  93.             when 1 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(hh,1,[time]),108)
  94.             when 2 then convert(nvarchar(5),[time],4) + ' ' + cast(datepart(yy,[time]) as nvarchar(4)) -- + ' г.'
  95.             when 3 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(mi,15,[time]),108)
  96.             when 4 then convert(nvarchar(5),[time],108) + ' - ' + convert(nvarchar(5),dateadd(mi,30,[time]),108)
  97.         end time
  98.         ,count(*) [Всего]
  99.         , sum(FlagAccepting) [Принято]
  100.         , sum(FlagMissed) [Пропущено]
  101.         , oktell.dbo.GetTimeFromSecond( round(avg(lenq),0)) [Ср. время ож.]
  102.         , oktell.dbo.GetTimeFromSecond( round(avg(lentime),0))  [Ср. дл. (успешных)] from (
  103.         select *, case when @interval in (1,3,4) then DATEADD(mi, DATEDIFF(mi, '19000101', TimeStart)/@intMin*@intMin, '19000101')
  104.             when @interval = 2 then cast(floor(cast (timestart as float)) as datetime)
  105.              end time from @Result) t
  106. group by time
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement