1
resposta

Desafio 2 - gerenciamento escolar com banco de dados relacional

--Consulta 1: Buscar o nome do professor e a turma que ele é orientador

SELECT nome_professor, nome_turma 
FROM Professores AS p
JOIN Turmas as t on t.id_professor_orientador=p.ID_Professor

--Consulta 2: Retornar o nome e a nota do aluno que possui a melhor nota na disciplina de Matemática

SELECT a.ID_Aluno,a.Nome_Aluno, max(n.Nota)
FROm Alunos a
JOIN Notas n on n.ID_Aluno=a.ID_Aluno
JOIN Disciplinas d on d.ID_Disciplina=n.ID_Disciplina
GROUP by d.Nome_Disciplina 
HAVING d.Nome_Disciplina = 'Matemática'
ORDER by n.Nota DESC
limit 1;

--Consulta 3: Identificar o total de alunos por turma

SELECT t.Nome_Turma, COUNT(ta.ID_Aluno) as Qtd_Alunos
from Turma_Alunos ta 
JOIN Turmas t on t.ID_Turma=ta.ID_Turma
GROUP by t.Nome_Turma;

--Consulta 4: Listar os Alunos e as disciplinas em que estão matriculados

SELECT a.Nome_Aluno , d.Nome_Disciplina as Disciplina
from Alunos a 
left JOIN Turma_Alunos ta on ta.ID_Aluno = a.ID_Aluno
left JOIN Turma_Disciplinas td on td.ID_Turma = ta.ID_Turma
left JOIN Disciplinas d on d.ID_Disciplina=td.ID_Disciplina
ORDER by a.Nome_Aluno

--Consulta 5: Criar uma view que apresenta o nome, a disciplina e a nota dos alunos

CREATE VIEW Situacao_alunos AS
SELECT 
    a.Nome_Aluno, 
    -- Tratando a Disciplina
    CASE 
        WHEN d.Nome_Disciplina IS NULL THEN 'Sem Disciplina'
        ELSE d.Nome_Disciplina 
    END AS Disciplina,
    -- Tratando a Nota
    CASE 
        WHEN n.Nota IS NULL THEN 'Sem Nota'
        ELSE n.Nota 
    END AS Nota_Final,
    -- Tratando o Status
    CASE 
        WHEN n.Nota IS NULL THEN 'N/A'
        WHEN n.Nota >= 7    THEN 'Aprovado'
        ELSE 'Reprovado'
    END AS Status
FROM Alunos a 
LEFT JOIN Notas n ON n.ID_Aluno = a.ID_Aluno
LEFT JOIN Disciplinas d ON d.ID_Disciplina = n.ID_Disciplina;

Consultando a View

SELECT*from Situacao_alunos
ORDER by Nome_Aluno, disciplina;
1 resposta

Olá, Raphael! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de junções para relacionar tabelas distintas, utilizou muito bem funções de agregação como COUNT e MAX para extrair informações relevantes e ainda compreendeu a importância da criação de views com CASE para tratar dados nulos e organizar melhor os resultados.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!