Reportes: Queries útiles

De Vocalcom.latam Wiki
Saltar a: navegación, buscar

Agentes simultaneos en un momento dado:

------------------------
--Agentes Simultaneos---
------------------------
---Pasos a seguir:
--Calcular agentes conectados
 
declare @aux table(agente int,desde datetime,hasta datetime, campania nvarchar(50))
declare @aux2 table(agente int,ultimallamada datetime)
declare @fecha datetime;
 
select @fecha = '20120123 10:00'
 
insert into @aux (agente,desde,hasta)
(select originatorid as 'Agente', actionlocaltime  as 'inicio', dateadd(ss,duration/100,actionlocaltime) as 'fin' from hn_ondata..odactions
where customerid = 2
and originatortype = 'A'
and actionlocaltime  < @fecha
and dateadd(ss,duration/100,actionlocaltime) > @fecha)
 
 
 
--Calcular campania de los agentes
insert into @aux2(agente,ultimallamada)
(select agente, max(calllocaltime)
from @aux a, odcalls b
where firstagent = agente
and calllocaltime <= desde
group by agente)
 
update @aux
set campania = c.firstcampaign
from @aux a,
(select firstagent,firstcampaign
from odcalls a, @aux2 b
where a.calllocaltime = b.ultimallamada) c
where a.agente = c.firstagent
 
select * from @aux


Para saber la cantidad de contestadores detectados, y cuantos pasaron a los agentes:

select
    sum(case when CallStatusGroup = 0 and CallStatusNum = 93 then 1 else 0 end) as 'CA System'
    ,sum(case
            when CallStatusGroup = 1 and CallStatusNum = 93  then 1 --Aqui va el grupo de calificacion que se esta usando y la calificacion que pone el agente
                       else 0
        end) as 'CA Agent'
   ,sum (case when Convduration > 0 then 1 else 0 end) as 'NB Agente'
   ,count (*) as 'NB Total'

from ODCalls
where CustomerID = 1  --Aqui va el numero de sitio correpondiente al que se desea analizar
and CallLocalTime between '20161201 08:00' and '20170103 12:00' --Este es el rango de fechas a analizar
and CallType = 2 --Aqui se especifica las llamadas que va a abarcar, en este caso solo las del discador

Para agrupar registros por dias por ej en la base de OnData:

  --Agrupa registros de ODCalls mediante su Calllocaltime
  select SUBSTRING(calllocaltimestring,1,8),count(*)
  from dbo.ODCalls
  where calllocaltime < '20170601'
  group by SUBSTRING(calllocaltimestring,1,8)
  order by 1

  --Agrupa registros de ODActions por su ActionLocalTime
  select SUBSTRING(actionlocaltimestring,1,8),count(*)
  from dbo.ODActions
  where ActionLocalTime < '20170601'
  group by SUBSTRING(ActionLocalTimeString,1,8)
  order by 1

Para borrar registros duplicados en dos tablas podemos utilizar la siguiente Query:

  --Borrar registros en Odcalls y su tabla de backup que esten duplicados en un intervalo de fechas
 delete from hn_ondata..odcalls
  where ID in
  (select id from HN_Ondata_Backups..ODCalls_2017
  where calllocaltime between '20170601' and '20171001')