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

Operadores com Defeito

Não concordei com a execução desse script. O meu ficou assim:

SELECT NOME, 
CASE
    WHEN YEAR(DATA_DE_NASCIMENTO) < 1990 THEN 'VELHOS'
    WHEN YEAR(DATA_DE_NASCIMENTO) >= 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'
    WHEN YEAR(DATA_DE_NASCIMENTO) > 1995 THEN 'CRIANÇAS'
    ELSE 'NÃO NASCEU'
END AS FAIXA_ETARIA
FROM TABELA_DE_CLIENTES 
4 respostas
solução!

Boa tarde Cássio.

Há apenas uma confusão lógica no momento de montar o seu script. Explicarei:

SELECT NOME, 
CASE
    WHEN YEAR(DATA_DE_NASCIMENTO) < 1990 THEN 'VELHOS'
    WHEN YEAR(DATA_DE_NASCIMENTO) >= 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'
    WHEN YEAR(DATA_DE_NASCIMENTO) > 1995 THEN 'CRIANÇAS'
    ELSE 'NÃO NASCEU'
END AS FAIXA_ETARIA
FROM TABELA_DE_CLIENTES 

No seu script você considera todas as pessoas nascidas antes de 1990 como velhos, já pessoas entre 1990 e 1995 como jovens e pessoas nascidas A PARTIR DE 1996 como crianças. Ou seja, para "pessoas não nascidas", ainda se classificaria dentro da condição de crianças.

Para considerar NÃO NASCIDOS você deveria verificar o ano corrente na faixa de crianças.

SELECT NOME, 
CASE
    WHEN YEAR(DATA_DE_NASCIMENTO) < 1990 THEN 'VELHOS'
    WHEN YEAR(DATA_DE_NASCIMENTO) >= 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'
    WHEN YEAR(DATA_DE_NASCIMENTO) > 1995 AND YEAR(DATA_DE_NASCIMENTO) <= YEAR(CURRENT_TIMESTAMP) THEN 'CRIANÇAS'
    ELSE 'NÃO NASCEU'
END AS FAIXA_ETARIA
FROM TABELA_DE_CLIENTES 

O que resultaria em algo do tipo.

Atenciosamente, Nicholas Góes

Por favor Nicholas não responda mais os meus POSTS. Você foge do conteúdo passado no curso. Ainda não cheguei nessa aula Nicholas. O script do curso está com defeito nos Operadores Lógicos essa foi minha crítica. Infelizmente não tenho como te bloquear. Observe a didática e explicação passada por David Neres. Você não tem competência para ensinar aqui.

Boa noite Cássio.

Peço desculpas pela tentativa falha de lhe ajudar. :( Aqui é um fórum de discussões e esclarecimento de dúvidas e muitas vezes as suas perguntas serão respondidas por alunos da própria plataforma Alura, assim como eu. Entrentanto já utilizo SQL há mais de 6 anos e me sinto confortável em auxiliar iniciantes na ferramenta. Nós, como alunos, estamos sujeitos a não ter uma mesma didática que professores, entretanto me motivo em ajudar ao próximo e à comunidade.

Por fim, antes de lhe responder anteriormente, observei o script apresentado como solução pelo professor David Neres e não há defeito algum com os operadores lógicos, o que há é apenas uma confusão na utilização das condições.

Peço desculpas se lhe faltei com educação em algum momento.

Bons estudos!

Agora você foi educado. Entendi o que você me ensinou sobre a data atual e muito obrigado. Não tinha estudado este comando ainda nas vídeo-aulas e perdão se exagerei.

O que comentei é que na resposta do exercício do professor, que por sinal é muito bom, estava uma informação inválida:

WHEN YEAR(DATA_DE_NASCIMENTO) <= 1990 THEN 'VELHOS'
WHEN YEAR(DATA_DE_NASCIMENTO) > 1990 AND YEAR(DATA_DE_NASCIMENTO) <= 1995 THEN 'JOVENS'

Essa resposta apresentada não é o que o professor pedia. Volto a falar mais uma vez Nicholas Alves Said Góes: Muito Obrigado pelo conhecimento e farei testes com o que você me ensinou.