--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;