locked
Query para buscar quantas vezes o cliente ligou para o atendimento ao consumidor. RRS feed

  • Pergunta

  • Olá Prezados, boa noite!

    Alguém consegue me dar uma ajuda na minha Query? Estou a duas semanas tentando resolver uma Query no trabalho, e não consigo desenvolver ela, até mesmo por que estou iniciando agora no SQL Server.

    O que preciso faze:

    Eu tenho uma tabela que se chamada Desabilitados com uma lista de clientes que desabilitaram o seu plano e também reabilitaram o seu plano, e com isso eu vou fazer um JOIN em outra tabela que se chamada AGOSTO (Atendimento ao Consumidor).

    Fazendo o JOIN com a tabela AGOSTO eu preciso saber, se o cliente que cancelou a linha na data XX (Tabela Desabilitados), e nessa data/e após essa data quantas vezes esse cliente retornou com o Atendimento ao Consumidor dentro de 3 dias.

    Exemplo, cancelou no dia 01/08/2016 (Preciso saber quantas vezes ele ligou de 01/08/2016 até 03/08/2016).

    Assim também para os clientes que reabilitaram as linhas.

    Obs.: Eu tentei usar o DATEDIFF porém não entendi muito e para que serve, junto com COUNT eGROUP BY.

    -- O que eu consegui fazer até o momento.

    TIPOS DE COLUNA.

    TABELA DESABILITADO----------------------------------------

    PRODUTO (TIPO DE PRODUTO: BANDA LARGA, FONE)

    ATENDIDO (DATA QUE ELE DESABILITOU OU REABILITOU)

    TIPO_SOLICITACAO (DESABILITADO, REABILITADO)

    CONTRATO (CONTRATO DO CLIENTE, QUE LIGA O JOIN)

    TABELA AGOSTO-----------------------------------------------

    NR_CONTRATO (CONTRATO DO CLIENTE, QUE LIGA O JOIN)SK_DATA (DATA QUE LIGOU NO ATENDIMENTO)

    ABAIXO MINHA QUERY:

    SELECT DESB.PRODUTO, DESB.ATENDIDO AS DAT_CANCELAMENTO,

    CASE DESB.TIPO_SOLICITACAO

    WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO'

    WHEN 'DESAB. PARCIAL THEN 'DESABILITADO'

    ELSE 'NÃO INFORMADO'

    END AS SOLICITACAO,

    CONTRATO = AGO.NR_CONTRATO, DATA_LIGACAO = COUNT(AGO.SK_DATA)

    FROM DESABILITADOS AS DESB INNER JOIN AGOSTO AS AGO

    ON DESB.CONTRATO = AGO.NR_CONTRATO

    GROUP BY DESB.PRODUTO, DESB.ATENDIDO, TIPO_SOLICITACAO, AGO.NR_CONTRATO


    sexta-feira, 16 de dezembro de 2016 18:55

Respostas

  • Boa tarde,

    Pelo que eu entendi, acho que você pode utilizar uma subquery para obter a quantidade de ligações.

    Experimente fazer uns testes dessa forma:

    SELECT 
        DESB.PRODUTO, 
        DESB.ATENDIDO AS DAT_CANCELAMENTO,
        CASE DESB.TIPO_SOLICITACAO
            WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO'
            WHEN 'DESAB. PARCIAL THEN 'DESABILITADO'
            ELSE 'NÃO INFORMADO'
        END AS SOLICITACAO,
        DESB.CONTRATO, 
        QTDE_LIGACOES = 
            (SELECT COUNT(1) FROM AGOSTO AS AGO
             WHERE
                 AGO.NR_CONTRATO = DESB.CONTRATO AND
                 AGO.SK_DATA BETWEEN DESB.ATENDIDO AND DATEADD(DAY, 3, DESB.ATENDIDO))
    FROM DESABILITADOS AS DESB
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 16 de dezembro de 2016 19:29

Todas as Respostas

  • Boa tarde,

    Pelo que eu entendi, acho que você pode utilizar uma subquery para obter a quantidade de ligações.

    Experimente fazer uns testes dessa forma:

    SELECT 
        DESB.PRODUTO, 
        DESB.ATENDIDO AS DAT_CANCELAMENTO,
        CASE DESB.TIPO_SOLICITACAO
            WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO'
            WHEN 'DESAB. PARCIAL THEN 'DESABILITADO'
            ELSE 'NÃO INFORMADO'
        END AS SOLICITACAO,
        DESB.CONTRATO, 
        QTDE_LIGACOES = 
            (SELECT COUNT(1) FROM AGOSTO AS AGO
             WHERE
                 AGO.NR_CONTRATO = DESB.CONTRATO AND
                 AGO.SK_DATA BETWEEN DESB.ATENDIDO AND DATEADD(DAY, 3, DESB.ATENDIDO))
    FROM DESABILITADOS AS DESB
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 16 de dezembro de 2016 19:29
  • Luciana,

    Como você esta armazenando a relação de ligações dos seus consumidores? Você deseja somente contar através do número do telefone?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 16 de dezembro de 2016 21:51
    Moderador
  • Deleted
    sábado, 17 de dezembro de 2016 10:15
  • Olá José,

    Esse tópico eu excluir, pois estava filtrado para Comunidade, e não SQL, porém não havia resposta. Obrigado.

    sábado, 17 de dezembro de 2016 21:06
  • Olá Junior, para eu contar, estamos considerando o numero de contrato do cliente, ele considera como uma ligação única no atendimento.
    sábado, 17 de dezembro de 2016 21:07
  • Olá Gapimex, estou fazendo os teste e já retorno com a resposta, no momento obrigado.
    sábado, 17 de dezembro de 2016 21:21
  • Luciano,

    Certo, então o número do contrato pode ser considerado a chave primária que podemos utilizar para estabelecer este controle?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 20 de dezembro de 2016 14:48
    Moderador
  • Boa tarde, Pedro.

    Sim, considero o Contrato, que faz leitura com outra tabela!

    terça-feira, 20 de dezembro de 2016 15:23
  • Luciano,

    Em algum lugar você tem armazenado este número de contrato e o número que ele ligou?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 20 de dezembro de 2016 16:58
    Moderador