Montando query para todos os estados dos chamados!

966 views
Skip to first unread message

Tácito Chaves

unread,
Sep 10, 2015, 3:11:18 PM9/10/15
to OTRS Brasil
Olá pessoal!

Estou desenvolvendo uma ferramenta de BI que vai montar alguns gráficos com informações dos atendimentos.

Neste momento estou precisando criar uma query que me traga o somatório dos estados por mês(Between). Porém a zica que estou encontrando é porque alguns chamados que já foram fechados estão vindo com outro estado, isso porque algum e-mail entrou e alterou o estado do chamado para aberto, e isso está dando zica na hora da criação do relatório, pois está dando inconsistência nessas informações. Exemplo:

Esta query eu estou usando para pegar todos os estados com somatório no mês informado.
mysql> SELECT MONTHNAME(ticket.create_time) AS Month, ticket_state.name AS State, COUNT(ticket_state.name) AS Quantity
    -> FROM ticket, ticket_state
    -> WHERE ticket.ticket_state_id = ticket_state.id
    -> AND ticket_state.valid_id = 1
    -> AND ticket.create_time
    -> BETWEEN '2015-08-01 00:00:00' AND '2015-09-10 23:59:59'
    -> AND ticket.user_id <> 1
    -> GROUP BY MONTH(ticket.create_time), State;
+-----------+---------------------------------+----------+
| Month     | State                           | Quantity |
+-----------+---------------------------------+----------+
| August    | Aguardando fornecedor           |       16 |
| August    | Em diagn�stico                  |        4 |
| August    | Fechado com �xito               |      386 |
| August    | Fechado com solu��o de contorno |       79 |
| August    | Fechado sem sucesso             |        2 |
| August    | Finalizar chamado               |        2 |
| August    | open                            |        2 |
| August    | Registrado                      |        2 |
| September | Aguardando fornecedor           |        5 |
| September | Em diagn�stico                  |        7 |
| September | Em solu��o                      |        3 |
| September | Fechado com �xito               |       71 |
| September | Fechado com solu��o de contorno |        4 |
| September | Fechado sem sucesso             |        1 |

| September | Finalizar chamado               |        1 |
| September | open                            |        1 |
| September | Registrado                      |        4 |
+-----------+---------------------------------+----------+

Esta outra query me retorna a quantida de chamados fechado no mês de setembro!
mysql> SELECT MONTHNAME(ticket.create_time) AS Month, COUNT(ticket.tn) Quantity
    -> FROM ticket_history
    -> LEFT JOIN
    -> ticket ON (ticket.id = ticket_history.ticket_id)
    -> LEFT JOIN
    -> queue ON queue.id = ticket.queue_id
    -> WHERE ticket.create_time between '2015-09-01 00:00:00' and '2015-09-10 23:59:59' AND ticket_history.history_type_id = 27 AND ticket_history.state_id IN (2,3,10) AND ticket.create_by != 1 AND queue.valid_id = 1 GROUP BY MONTH(ticket.create_time);
+-----------+----------+
| Month     | Quantity |
+-----------+----------+
| September |       78 |
+-----------+----------+

Repare que se somarmos os chamados fechados do mês de setembro da primeira query, nós iremos ter um total de 76 chamados, mas e aí, cadê os outros 2 para formar os 78 chamados fechados da última query? Eu vasculhando, achei 1 neste estado open que estava fechado e após receber um email, ele alterou o estado para open, mas ele já tinha sido fechado. Deu para entender?

Então eu quero uma query que me traga o somatório dos estados mas se o chamado tiver fechado e tiver seu estado alterado por causa de uma troca de emails, ele seja capaz de identificar isso também.

Alguem que já tenha tido esta experiência e queira ajudar nessa solução?!

Agradeço desde já!

Reply all
Reply to author
Forward
0 new messages