Pesquisa SQL para Gráfico

27/04/2018

2

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)
Daniel Schmitz

Daniel Schmitz

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

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:

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar