2
respostas

Resposta do exercício de idade

SELECT NOME,
    CASE WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTO'
    WHEN YEAR([DATA DE NASCIMENTO]) > 1990 AND YEAR([DATA DE NASCIMENTO]) <= 1995 THEN 'JOVEM'
    ELSE 'CRIANÇA' END AS 'CLASSIFICAÇÃO POR IDADE'
FROM [TABELA DE CLIENTES]
GROUP BY NOME,
    CASE WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTO'
    WHEN YEAR([DATA DE NASCIMENTO]) > 1990 AND YEAR([DATA DE NASCIMENTO]) <= 1995 THEN 'JOVEM'
    ELSE 'CRIANÇA' END
2 respostas

Ajustei colocando BETWEEN, acho que ficaria melhor até por questão de desempenho, ficaria assim:

SELECT NOME,
CASE WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTO'
WHEN YEAR([DATA DE NASCIMENTO]) BETWEEN 1990 AND 1995 THEN 'JOVEM'
ELSE 'CRIANÇA' END AS 'CLASSIFICAÇÃO POR IDADE'
FROM [TABELA DE CLIENTES]
GROUP BY NOME,
CASE WHEN YEAR([DATA DE NASCIMENTO]) < 1990 THEN 'ADULTO'
WHEN YEAR([DATA DE NASCIMENTO]) BETWEEN 1990 AND 1995 THEN 'JOVEM'
ELSE 'CRIANÇA' END

Olá, Gabriel, tudo bem?

Desde já peço desculpas pela demora em obter retorno.

De fato o BETWEEN está bem empregado e fica também mais legível.

Quanto ao seu código notei que você fez um agrupamento e coloca novamente o código de categorização dos clientes. Não há necessidade dessa agrupação, pois o SELECT com o CASE já são suficientes para gerar a classificação de clientes por faixa etária.

Portanto, o código ficará assim:

select [NOME],
case 
    when year([DATA DE NASCIMENTO]) < 1990 then 'Adulto'
    when year([DATA DE NASCIMENTO]) between 1990 and 1995 then 'Jovem'
    else 'Criança' end as [Classificação Etária]
 from [TABELA DE CLIENTES]

Gabriel, caso surja alguma dúvida, ficarei à disposição.

Abraços e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!