Суммарное время нахождения абонента во Flash-буфере — различия между версиями
Строка 10: | Строка 10: | ||
− | + | <pre> | |
− | + | declare @astr nvarchar(max) | |
− | + | select top 1 @astr=Astr from A_Stat_Connections_1x1 | |
− | + | where idchain = @idchain | |
− | + | ||
− | + | select @duration= sum(case when diff<0 then 0 else diff end)/1000 | |
− | + | from ( | |
− | + | select a.TimeStop, b.TimeStart, DATEDIFF(MILLISECOND,a.TimeStop,b.TimeStart) diff | |
− | + | from ( | |
+ | select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn | ||
+ | from A_Stat_Connections_1x1 | ||
+ | where idchain = @idchain | ||
+ | and astr like '%'+@astr+'%')a | ||
+ | left join | ||
+ | ( | ||
+ | select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn | ||
+ | from A_Stat_Connections_1x1 | ||
+ | where idchain = @idchain | ||
+ | and astr like '%'+@astr+'%')b | ||
+ | on a.rn+1=b.rn | ||
+ | )aa | ||
+ | </pre> | ||
где | где | ||
*@idchain - идентификатор цепочки коммутаций | *@idchain - идентификатор цепочки коммутаций | ||
*@duration - рассчитанное время ожидания | *@duration - рассчитанное время ожидания |
Версия 09:53, 13 апреля 2015
Когда оператор осуществляет консультативный перевод, абонент временно попадает во флеш-буфер. В статистику коммутаций [oktell]..[a_stat_connections_1x1] при этом информация о времени ожидания абонента не записывается, однако есть информация о времени начала коммутации (TimeStart) и времени конца (TimeStop). Время ожидания можно получить, если вычесть из времени начала следующей коммутации время конца предыдущей. Идентификатор следующей коммутации в цепочке хранится в поле IdNext. Пример цепочки коммутаций, в которой были переводы показан на рисунке.
Следующий запрос реализует вышеописанную логику. В запросе также учитывается случай, когда после переключения в IVR сценарии, он продолжает выполнять некоторые действия (SQL, Web-запросы) и время его окончания больше, чем время начала коммутации с сотрудником. Поэтому в запросе поставлено ограничение на отрицательные значения, поскольку они не имеют отношения ко Flash-буферу.
declare @astr nvarchar(max) select top 1 @astr=Astr from A_Stat_Connections_1x1 where idchain = @idchain select @duration= sum(case when diff<0 then 0 else diff end)/1000 from ( select a.TimeStop, b.TimeStart, DATEDIFF(MILLISECOND,a.TimeStop,b.TimeStart) diff from ( select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn from A_Stat_Connections_1x1 where idchain = @idchain and astr like '%'+@astr+'%')a left join ( select id,astr,Bstr,TimeStart, TimeStop, ROW_NUMBER() OVER(ORDER BY timestart asc) as rn from A_Stat_Connections_1x1 where idchain = @idchain and astr like '%'+@astr+'%')b on a.rn+1=b.rn )aa
где
- @idchain - идентификатор цепочки коммутаций
- @duration - рассчитанное время ожидания