Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quantidade por faixa etária

Boa tarde, além de classificar os clientes por faixa etária, pensei em também contar as classificações.

O código ficou assim

SELECT 
CASE WHEN TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') < 1990 THEN 'VELHO'
     WHEN TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') >= 1990 AND 
     TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') <= 1995 THEN 'JOVEM'
     ELSE 'CRIANÇAS'
END AS CLASSIFICADO_COMO,
COUNT(*) AS QUANTIDADE
FROM TABELA_DE_CLIENTES 
GROUP BY (CASE WHEN TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') < 1990 THEN 'VELHO'
     WHEN TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') >= 1990 AND 
     TO_CHAR(DATA_DE_NASCIMENTO, 'YYYY') <= 1995 THEN 'JOVEM'
     ELSE 'CRIANÇAS'
END) ORDER BY QUANTIDADE DESC;

Teria um jeito mais eficiente de fazer essa contagem?

1 resposta
solução!

Oi, Mateus! Seu COUNT está eficiente, até pq ele é "só" isso ai mesmo. Você pode especificar qual coluna vai fazer a contagem também COUNT(DATA_DE_NASCIMENTO), mas não se aplica ao seu exemplo.

Acho que seu estranhamento refere-se a "verbosidade" do case. Se for isso, não tem muito jeito não, rsrs. Ele é muito útil, mas é bem extenso, principalmente quando envolvem muitos casos de comparação. Aqui na empresa temos casos de mais de 40 linhas de código em apenas uma query, rsrs. E essa verbosidade ainda "acumula" quando trabalhamos com subqueries ^^.

Sucesso e bons estudos!