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

DESAFIO MODULO 02 AULA10 - CONSULTAS AVANÇADAS SQL LINK: https://cursos.alura.com.br/course/microsoft-sql-server-2022-consultas-avancadas/task/120087

Veja a tabela abaixo (Nome da tabela - ALUNOS):

NOMEIDADEFORMAÇÃO
JOÃO17ALEMÃO
MARIA18ALEMÃO
KATIA19INGLÊS
PEDRO19INGLÊS

Voltando à expressão do exercício anterior, temos:

Se o aluno tiver 18 anos ou mais ou for formado em Inglês ele pode ir para a Escola de Estudos Astronômicos. Ou se ele tiver menos de 18 anos e for formado em Alemão, então deve ir para a Escola de Estudos Supersônicos.

REFERENTE A ESSA QUESTÃO ACIMA, se eu quisesse juntar as 2 consultas, esse comando abaixo estaria correto ?

 SELECT NOME, IDADE, CASE IDADE WHEN >= 18, THEN 'APROVADO - ESCOLA DE ESTUDOS ASTRONOMICOS'
                                            ELSE 'APROVADO - ESCOLA DE ESTUDOS SUPERSONICOS'
                                            END AS CLASSIFICADOS
 FROM ALUNOS;

ESSA OUTRA CONSULTA, TBM ESTARIA CORRETA ?

SELECT * FROM ALUNOS WHERE FORMAÇÃO = ALEMÃO AND IDADE < 18 THEN 'APROVADO - ESCOLA DE ESTUDOS SUPERSONICOS';
1 resposta
solução!

Olá Jessica! Tudo ok contigo?

Na primeira consulta, você está tentando usar uma expressão CASE para classificar os alunos com base na idade. No entanto, há um pequeno problema na sintaxe. A expressão correta seria:

SELECT NOME, IDADE, 
CASE WHEN IDADE >= 18 THEN 'APROVADO - ESCOLA DE ESTUDOS ASTRONOMICOS'
     ELSE 'APROVADO - ESCOLA DE ESTUDOS SUPERSONICOS'
END AS CLASSIFICADOS
FROM ALUNOS;

No entanto, essa consulta ainda não está completamente correta, pois não está levando em consideração a formação do aluno.

A segunda consulta também possui um probleminha na sintaxe. O valor 'ALEMÃO' deve estar entre aspas, pois é uma string. Além disso, a cláusula THEN não é usada em uma consulta SELECT comum. A consulta corrigida seria:

SELECT * FROM ALUNOS WHERE FORMAÇÃO = 'ALEMÃO' AND IDADE < 18;

Essa consulta selecionará todos os alunos com formação em Alemão e com menos de 18 anos.

Agora, para resolver o problema completo, você pode usar uma expressão CASE com múltiplas condições, como esta:

SELECT NOME, IDADE, FORMAÇÃO,
CASE WHEN IDADE >= 18 OR FORMAÇÃO = 'INGLÊS' THEN 'APROVADO - ESCOLA DE ESTUDOS ASTRONOMICOS'
     WHEN IDADE < 18 AND FORMAÇÃO = 'ALEMÃO' THEN 'APROVADO - ESCOLA DE ESTUDOS SUPERSONICOS'
     ELSE 'NÃO APROVADO'
END AS CLASSIFICADOS
FROM ALUNOS;

Essa consulta irá classificar os alunos de acordo com as condições dadas: se o aluno tiver 18 anos ou mais ou for formado em Inglês, será classificado para a Escola de Estudos Astronômicos; se tiver menos de 18 anos e for formado em Alemão, será classificado para a Escola de Estudos Supersônicos. Se não se enquadrar em nenhuma dessas condições, será classificado como 'NÃO APROVADO'.

Espero ter ajudado e bons estudos!