Pesquisa SQL para Gráfico
27/04/2018
0
Preciso fazer uma consulta SQL que retorne o total de Tickets registrados em cada mês, para colocar em um gráfico. E não tenho minima ideia de como fazer isso. Ainda estou aprendendo por isso estou um pouco perdido, por favor alguém me ajude!
Estrutura para tabela `tickets`
CREATE TABLE IF NOT EXISTS `tickets` (
`id_tickets` int(11) NOT NULL,
`prior_tickets` varchar(45) DEFAULT NULL,
`origem_tickets` varchar(45) DEFAULT NULL,
`status_tickets` varchar(45) DEFAULT NULL,
`data_tickets` datetime DEFAULT NULL,
`adm_id_parc` int(11) NOT NULL)
Estrutura para tabela `tickets`
CREATE TABLE IF NOT EXISTS `tickets` (
`id_tickets` int(11) NOT NULL,
`prior_tickets` varchar(45) DEFAULT NULL,
`origem_tickets` varchar(45) DEFAULT NULL,
`status_tickets` varchar(45) DEFAULT NULL,
`data_tickets` datetime DEFAULT NULL,
`adm_id_parc` int(11) NOT NULL)
Daniel Schmitz
Curtir tópico
+ 0
Responder
Post mais votado
27/04/2018
Olá Daniela, veja se uma das formas apresentadas abaixo atende ao que você precisa:
SELECT MONTH(data_tickets) AS Mes, COUNT(id_tickets) AS Qtde FROM tickets GROUP BY MONTH(data_tickets) SELECT CAST(MONTH(data_tickets) as varchar) + '/' + CAST(Year(data_tickets) as varchar) AS Mes, COUNT(id_tickets) AS Qtde FROM tickets GROUP BY CAST(MONTH(data_tickets) as varchar) + '/' + CAST(Year(data_tickets) as varchar)
Jerson Boer
Responder
Mais Posts
28/04/2018
Daniel Schmitz
Obrigado pela ajuda, o código abaixo funcionou! Só mais uma dúvida teria uma forma de trazer o valor 0 quando não tem registros no mês??
SELECT MONTH(data_tickets) AS Mes, COUNT(id_tickets) AS Qtde FROM tickets GROUP BY MONTH(data_tickets)
Responder
28/04/2018
Jerson Boer
Que bom que esse código ajudou. Para a pergunta sobre mostrar 0 caso o mês não tenha ticket, até onde conheço para que isso funcione você vai precisar ter uma tabela com os nomes dos meses e relacionar a ela a contagem de tickets. Exemplo abaixo:
Veja se consegue recria-la com a função abaixo:
Só precisa se atentar caso o seu gráfico exiba valores entre anos diferentes, porque a sua estrutura de exibição deve ser outra para não somar junto os tickets entre anos.
SELECT NomeMes.CodigoMes, NomeMes.Mes, CASE WHEN ContaTicheck.Qtde IS NULL THEN 0 ELSE ContaTicheck.Qtde END Qtde FROM NomeMes LEFT JOIN (SELECT MONTH(data_tickets) AS Mes, COUNT(id_tickets) AS Qtde FROM tickets WHERE (data_tickets >= CONVERT(DATETIME, '2018-04-01 00:00:00', 102)) GROUP BY MONTH(data_tickets)) AS ContaTicheck ON ContaTicheck.Mes = NomeMes.CodigoMes
Veja se consegue recria-la com a função abaixo:
CREATE TABLE [dbo].[NomeMes]( [CodigoMes] [int] IDENTITY(1,1) NOT NULL, [Mes] [varchar](50) NOT NULL, [MesAbrev] [varchar](50) NULL, CONSTRAINT [PK_NomeMes] PRIMARY KEY CLUSTERED ( [CodigoMes] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Só precisa se atentar caso o seu gráfico exiba valores entre anos diferentes, porque a sua estrutura de exibição deve ser outra para não somar junto os tickets entre anos.
Responder
Clique aqui para fazer login e interagir na Comunidade :)