Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Query modificada

Alterei a query para apresentar um resultado mais "bonitinho" e usei o TO_DATE em vez do TO_CHAR, e também ordenei por nome.

SELECT NOME,
(CASE WHEN DATA_DE_NASCIMENTO < TO_DATE('1990','YYYY') THEN 'VELHO'
      WHEN DATA_DE_NASCIMENTO >= TO_DATE('1990','YYYY') AND 
      DATA_DE_NASCIMENTO <= TO_DATE('1995','YYYY') THEN 'JOVEM'
      ELSE 'CRIANÇA'
END)AS CLASSIFICACAO      
FROM TABELA_DE_CLIENTES
GROUP BY NOME,
(CASE WHEN DATA_DE_NASCIMENTO < TO_DATE('1990','YYYY') THEN 'VELHO'
      WHEN DATA_DE_NASCIMENTO >= TO_DATE('1990','YYYY') AND 
      DATA_DE_NASCIMENTO <= TO_DATE('1995','YYYY') THEN 'JOVEM'
      ELSE 'CRIANÇA'
END)
ORDER BY (NOME);
3 respostas
solução!

Olá, Gabriel, tudo bem?

A sua query ficou bem legal Gabriel, porém, você está utilizando alguns comandos que não são necessários, como por exemplo a cláusula GROUP BY. O CASE não é uma função de agregação, então você não precisa utilizar a cláusula GROUP BY na sua consulta:

SELECT NOME,
(CASE WHEN DATA_DE_NASCIMENTO < TO_DATE('1990','YYYY') THEN 'VELHO'
      WHEN DATA_DE_NASCIMENTO >= TO_DATE('1990','YYYY') AND 
      DATA_DE_NASCIMENTO <= TO_DATE('1995','YYYY') THEN 'JOVEM'
      ELSE 'CRIANÇA'
END)AS CLASSIFICACAO      
FROM TABELA_DE_CLIENTES
ORDER BY (NOME);

Foi muito legal você ter compartilhado a sua resposta da atividade aqui com a gente, você está indo muito bem.

Continue assim e bons estudos!

Olá, boa tarde. Entendi, então no caso as funções de agregação seriam, COUNT,MAX,MIN,AVG, seria isso?

Isso mesmo Gabriel, as funções de agregação são: COUNT,MAX,MIN,AVG e SUM.

A título de curiosidade, caso queira ler um pouco mais sobre as funções de agregação, indico a leitura do artigo: Trabalhando com funções de agregação publicado no blog da Alura.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software