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á!