1
resposta

Duvida - Consulta 4

A consulta 4 solicita "Porcentagem dos alunos que estão aprovados" mas a resolucao dada para a questao nao responde ela

SELECT (SELECT COUNT() FROM Alunos) AS Total_Alunos, (SELECT COUNT() FROM Alunos a JOIN Notas n ON n.ID_Aluno = a.ID_Aluno WHERE n.Nota >= 7.0) AS Alunos_Aprovados, (SELECT COUNT() FROM Notas) AS Total_Notas, (ROUND(100.0 * (SELECT COUNT() FROM Alunos a JOIN Notas n ON n.ID_Aluno = a.ID_Aluno WHERE n.Nota >= 7.0) / (SELECT COUNT(*) FROM Notas), 2) || '%') AS Porcentagem

Note que a consulta pede a porcentagem de alunos que estao aprovados, mas na resolucao o professor nao levou em consideracao que um mesmo aluno pode ter feito mais de uma disciplinas e ter alcançado a media em mais de uma disciplina, de modo que ao executarmos: SELECT COUNT(*) FROM Alunos a JOIN Notas n ON n.ID_Aluno = a.ID_Aluno WHERE n.Nota >= 7.0 Poderiamos contabilizar um mesmo aluno mais de uma vez, o que afetaria no calculo da porcentagem.

Acredito que o enunciado da questao 4 devesse ser alterado para "Consulta 4: Porcentagem de notas iguais ou superiores à média"

1 resposta

Ei, Fábio! Tudo bem?

Obrigada por pontuar isso para gente, faz sentido o que você trouxe sobre a especificidade no enunciado.

Uma dica para resolver, nesse contexto que trouxe, podemos ajustar a consulta para garantir que cada aluno seja contado apenas uma vez, independentemente de quantas disciplinas ele tenha sido aprovado.

Podemos modificar a consulta para usar o DISTINCT na contagem dos alunos aprovados, assim:

SELECT
    (SELECT COUNT(*) FROM Alunos) AS Total_Alunos,
    (SELECT COUNT(DISTINCT a.ID_Aluno) FROM Alunos a JOIN Notas n ON n.ID_Aluno = a.ID_Aluno WHERE n.Nota >= 7.0) AS Alunos_Aprovados,
    (ROUND(100.0 * (SELECT COUNT(DISTINCT a.ID_Aluno) FROM Alunos a JOIN Notas n ON n.ID_Aluno = a.ID_Aluno WHERE n.Nota >= 7.0) / (SELECT COUNT(*) FROM Alunos), 2) || '%') AS Porcentagem

Com essa alteração, estamos garantindo que cada aluno aprovado seja contado apenas uma vez na porcentagem de aprovação. Espero que essa modificação ajude a resolver sua dúvida e a consulta fique mais alinhada com a questão proposta.

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais, Fábio!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!