Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Macêdo

Quantidade de registros por cada ENUM

Recommended Posts

Estou tentando fazer uma consulta que me traga a quantidade de registros de uma tabela separados por cada item do ENUM.

 

TABELA: tbl_solicitacoes

- id_solic

- nome

- categoria (ENUM: 'Pendente', 'Cancelados', 'Em Análise', 'Atendido', 'Finalizando')

 

Gostaria que me trouxesse o resultado assim:

 

Pendetes | 9

Cancelados | 34

Em Análise | 7

Atendido | 67

Finalizando | 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei o seguinte:

SELECT COUNT(*), bool_status FROM `tbl_solicitacoes` GROUP BY bool_status

 

Mas isso me retorna apenas os campos que tem algum registro, mas preciso que retorne os que não tem com valor zero.

 

Tentei utilizar o CASE mas deu errado também:

SELECT bool_status,  

CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Pendente' THEN COUNT(*) ELSE 0 END AS PENDENTES,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Em Análise' THEN COUNT(*) ELSE 0 END AS ANÁLISE,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Atendimento em 45 dias' THEN COUNT(*) ELSE 0 END AS 45_DIAS,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Atendimento em 60 dias' THEN COUNT(*) ELSE 0 END AS 60_DIAS,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Cancelado' THEN COUNT(*) ELSE 0 END AS CANCELADO,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Correção' THEN COUNT(*) ELSE 0 END AS CORREÇÃO,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Finalizando' THEN COUNT(*) ELSE 0 END AS FINALIZANDO,  
CASE WHEN COUNT(*) IS NOT NULL AND bool_status = 'Atendido' THEN COUNT(*) ELSE 0 END AS ATENDIDO  

FROM tbl_solicitacoes 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui da seguinte forma:

SELECT 
SUM( bool_status = 'Pendente' ) AS Pendente, 
SUM( bool_status = 'Em Análise' ) AS 'Em Análise', 
SUM( bool_status = 'Atendimento em 45 dias' ) AS 'Atendimento em 45 dias', 
SUM( bool_status = 'Atendimento em 60 dias' ) AS 'Atendimento em 60 dias', 
SUM( bool_status = 'Cancelado' ) AS Cancelado, 
SUM( bool_status = 'Atendido' ) AS Atendido, 
SUM( bool_status = 'Correção' ) AS Correção, 
SUM( bool_status = 'Finalizando' ) AS Finalizando
FROM tbl_solicitacoes

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT bool_status,  

Sum(CASE WHEN bool_status = 'Pendente' THEN 1 ELSE 0 END AS PENDENTES,  
...
Sum(CASE WHEN bool_status = 'Atendido' THEN 1 ELSE 0 END AS ATENDIDO,
Sum(CASE WHEN bool_status is null THEN 1 ELSE 0 END AS nulos

FROM tbl_solicitacoes 
group by bool_status

Mas isto só faz sentido se bool_status for um código, sendo já uma descrição ...

 

SELECT bool_status,count(*) qtd
FROM tbl_solicitacoes 
group by bool_status

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.