Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Consulta com métricas de atendimentos agilis


Paulo Lima

Posts Recomendados


  • Tópicos Que Criei:  6
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  17
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  146
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

Estou tentando gerar o tempo médio em que um chamado fica com um determinado atendente no Agilis. 

Até aí tudo bem, pois tenho uma tabela de repasses  e basta realizar a média do tempo em que um repasse fica com um determinado atendente. O problema é que eu preciso subtrair deste tempo o período em que um chamado fica com o status AGUARDANDO TERCEIROS e AGENDADO. sendo que este status fica armazenado em uma outra tabela, no caso a HSTATUSATEND.

O caso fica ainda mais complexo porque o chamado poderá passar por vários atendentes estando com um mesmo status (esse tempo do status deverá ser quebrado por atendente, neste caso)

e um chamado poderá ter também vários status com um único atendente.

fiz a consulta para exibir o status que um chamado passa por toda a sua vida útil e uma outra com o histórico de repasses. estou anexando as duas neste tópico. 

 

O que eu preciso é calcular o tempo médio que um chamado ficou com um determinado atendente, subtraindo deste tempo o período em que este atendimento ficou com o Status AGUARDANDO TERCEIROS e AGENDADO.

 

desde já agradeço.

consulta de repasses.txt consulta de status do atendimento.txt

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  59
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  820
  • Conteúdo/Dia:  0.16
  • Reputação:   107
  • Pontos/Conquistas:  4.791
  • Conteúdo Resolvido:  0
  • Dias Ganho:  74
  • Status:  Online
  • Idade:  61
  • Dispositivo:  Windows

Boa tarde.

Usamos esta consulta para apresentar o status da aprovação dos movimentos do compras.

Status Aprovação.txt

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  6
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  17
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  146
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

Obrigado, infelizmente não ajudou. A lógica que eu preciso é um pouco diferente. 

Acho que primeiro eu preciso verificar por quanto tempo um chamado ficou parado em um determinado Status. Ou seja, observando o chamado eu tenho que calcular qual foi o tempo em que ele ficou de "AGUARDANDO TERCEIROS" para o proximo status que é o "em andamento"

não conheço nenhuma função no sql que possa me retornar o intervalo de tempo entre uma linha e outra

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  484
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.226
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Paulo Lima, boa tarde!

Temos como lhe ajudar, porém, precisamos saber qual é o banco e versão para o desenvolvimento da query... 

No aguardo.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  484
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.226
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@Paulo Lima

Segue um esboço da query... não finalizei, mas se estiver tudo correto***  é só sumarizar e efetuar os cálculos que desejar.

*** Criei essa query com base em um processo que utilizávamos, sendo assim, podem ocorrer outras situações que não tenho conhecimento.

USE CORPORERM

GO

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 

DECLARE @CODCOLIGADA INT = 1
DECLARE @CODLOCAL INT = 1 
DECLARE @CODATENDIMENTO INT = 254489
DECLARE @DATAABERTURA DATETIME = '2018-01-01'


;WITH [STATUS]
AS
(
    SELECT CODSTATUS, DESCRICAO 
    FROM ( VALUES 
         ('G','AGENDADO A RESPONDER')
        ,('E','AGENDADO RESPONDIDO')
        ,('T','AGUARDANDO TERCEIROS')
        ,('C','CANCELADO')
        ,('R','CONCLUÍDO A RESPONDER')
        ,('F','CONCLUÍDO CONFIRMADO')
        ,('O','CONCLUÍDO RESPONDIDO')
        ,('D','DESPERTADO')
        ,('A','EM ANDAMENTO')
    ) TAB (CODSTATUS,DESCRICAO)
)
, TAB_ABERTURA
AS
(
    SELECT
         1 AS 'SEQ'
        ,AB.CODCOLIGADA
        ,AB.CODLOCAL 
        ,AB.CODATENDIMENTO
        ,AB.ABERTURA AS 'DATA' 
        ,'A' AS 'CODSTATUS'
        ,AB.CODATENDENTE 
    FROM DBO.HATENDIMENTOBASE AB
    WHERE AB.CODCOLIGADA = @CODCOLIGADA 
    AND AB.CODLOCAL = @CODLOCAL 
    AND AB.ABERTURA > = @DATAABERTURA
    --AND AB.CODATENDIMENTO = @CODATENDIMENTO
)
, TAB_STATUS
AS
(
    SELECT
         ROW_NUMBER() OVER(PARTITION BY S.CODCOLIGADA,S.CODLOCAL,S.CODATENDIMENTO ORDER BY S.CODCOLIGADA,S.CODLOCAL,S.CODATENDIMENTO , S.[DATA]) + 1 AS 'SEQ'
        ,S.CODCOLIGADA 
        ,S.CODLOCAL
        ,S.CODATENDIMENTO
        ,S.[DATA]
        ,S.CODSTATUS
        ,S.CODATENDENTE
    FROM TAB_ABERTURA A 
    JOIN DBO.HSTATUSATEND S ON (A.CODCOLIGADA = S.CODCOLIGADA AND A.CODLOCAL = S.CODLOCAL AND A.CODATENDIMENTO = S.CODATENDIMENTO)
)
, TAB_DADOS
AS
(
    SELECT 
         A.SEQ    
        ,A.CODCOLIGADA    
        ,A.CODLOCAL    
        ,A.CODATENDIMENTO    
        ,A.[DATA]    
        ,A.CODSTATUS    
        ,A.CODATENDENTE
    FROM TAB_ABERTURA A  
    
    UNION 
    
    SELECT 
         S.SEQ    
        ,S.CODCOLIGADA    
        ,S.CODLOCAL    
        ,S.CODATENDIMENTO    
        ,S.[DATA]    
        ,S.CODSTATUS    
        ,S.CODATENDENTE
    FROM TAB_STATUS S
)
, TAB_DADOSREF
AS
(
    SELECT 
         D.SEQ    
        ,D.CODCOLIGADA    
        ,D.CODLOCAL    
        ,D.CODATENDIMENTO    
        ,D.[DATA]    
        ,CASE    
            WHEN DF.DATAREF IS NULL AND D.CODSTATUS = 'A' 
            THEN GETDATE()
            
            WHEN DF.DATAREF IS NULL AND D.CODSTATUS IN ( 'C' , 'F' , 'O', 'R')
            THEN D.[DATA]
    
         ELSE DF.DATAREF 
         END AS 'DATAREF'
        ,D.CODSTATUS    
        ,S.DESCRICAO
        ,D.CODATENDENTE 
    FROM TAB_DADOS D
    LEFT JOIN [STATUS] S ON ( D.CODSTATUS = S.CODSTATUS ) 
    OUTER APPLY 
    (
        SELECT DI.[DATA] AS 'DATAREF'
        FROM TAB_DADOS DI
        WHERE DI.CODCOLIGADA = D.CODCOLIGADA 
        AND DI.CODLOCAL = D.CODLOCAL
        AND DI.CODATENDIMENTO = D.CODATENDIMENTO
        AND DI.SEQ = (D.SEQ + 1 )
    ) DF
)
SELECT 
     DR.SEQ
    ,DR.CODCOLIGADA 
    ,DR.CODLOCAL
    ,DR.CODATENDIMENTO
    ,DR.[DATA]
    ,DR.DATAREF
    ,DATEDIFF(N,DR.[DATA],DR.DATAREF) AS 'MINUTOS'
    ,DR.CODSTATUS 
    ,DR.DESCRICAO 
    ,DR.CODATENDENTE
FROM TAB_DADOSREF DR
ORDER BY 2,3,4,1 

 

Espero ter ajudado um pouco.

Abraços.

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.