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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar