Abaixo algumas aplicações do aprendizado em aula para resolução dos problemas
-- Consulta 1: Retorne todas as disciplinas (Restringi para apenas nome e descrição, pois são as informações relevantes para o retorno pedido)
SELECT
Nome_Disciplina,
Descricao
FROM
Disciplinas d;
-- Consulta 2: Retorne os alunos que estão aprovados na disciplina de matemática (Considerando corte de nota em 7)
SELECT
a.Nome_Aluno,
d.Nome_Disciplina, -- Validação
n.Nota,
CASE
WHEN Nota >= 7 THEN 'Aprovado'
ELSE 'Reprovado'
END AS Situacao
FROM
Alunos a
INNER JOIN
Notas n ON n.ID_Aluno = a.ID_Aluno
INNER JOIN
Disciplinas d ON d.ID_Disciplina = n.ID_Disciplina
WHERE
Situacao = "Aprovado"
AND d.Nome_Disciplina = "Matemática";
-- Consulta 3: Identificar o total de disciplinas por turma
SELECT
t.Nome_Turma,
COUNT(td.ID_Disciplina) as Disciplinas
FROM
Turma_Disciplinas td
INNER JOIN
Turmas t ON t.ID_Turma = td.ID_Turma
GROUP BY
t.Nome_Turma;
-- Consulta 4: Porcentagem dos alunos que estão aprovados (Utilizando WITH aproveitando uma tabela montada anteriormente para gerar situação da nota)
WITH Indice AS (
SELECT
a.ID_Aluno AS ID,
a.Nome_Aluno AS Nome_Aluno,
n.Nota AS Nota,
CASE
WHEN Nota >= 7 THEN 'Aprovado'
ELSE 'Reprovado'
END AS Situacao
FROM
Alunos a
INNER JOIN
Notas n ON n.ID_Aluno = a.ID_Aluno
INNER JOIN
Disciplinas d ON d.ID_Disciplina = n.ID_Disciplina),
Totais AS (
SELECT
COUNT(*) AS Total_Notas
FROM
Notas)
SELECT
t.Total_Notas,
COUNT(i.ID) AS Aprovados,
ROUND((COUNT(i.ID) * 100.0 / t.Total_Notas), 2) || "%" AS Porcentagem
FROM
Indice i,
Totais t
WHERE
i.Situacao = 'Aprovado';
-- Consulta 5: Porcentagem dos alunos que estão aprovados por disciplina
SELECT
d.Nome_Disciplina AS Disciplina,
COUNT(*) AS Total_Alunos,
SUM(CASE
WHEN n.Nota >= 7 THEN 1
ELSE 0
END) AS Aprovados,
ROUND(SUM(CASE
WHEN n.Nota >= 7 THEN 1
ELSE 0
END) * 100.0 / COUNT(*), 2) || '%' AS Indice_Aprovados
FROM
Alunos a
INNER JOIN
Notas n ON n.ID_Aluno = a.ID_Aluno
INNER JOIN
Disciplinas d ON d.ID_Disciplina = n.ID_Disciplina
GROUP BY
Disciplina;