3
respostas

RESULTADO DIFERENTE

Pessoal, algo me deixou confuso... rs

No exercício 7 da aula 2, o enunciado pede "Podemos agrupar por mais de um campo de uma só vez. Por exemplo, se quisermos a média de notas por aluno por curso, podemos fazer GROUP BY aluno.id, curso.id".

Montei o exercício assim:

SELECT a.nome AS ALUNO, c.nome AS CURSO, ROUND(AVG(n.nota), 2) AS MEDIA_NOTA
    FROM aluno a
    JOIN matricula m ON a.id = m.aluno_id
    JOIN curso c ON m.curso_id = c.id
    JOIN secao s ON c.id = s.curso_id
    JOIN exercicio e ON s.id = e.secao_id
    JOIN resposta r ON e.id = r.exercicio_id
    JOIN nota n ON r.id = n.resposta_id
    GROUP BY c.nome, a.nome;

Porém o resultado do instrutor foi assim:

select a.nome, c.nome, avg(n.nota) from 
nota n
join resposta r on r.id = n.resposta_id
join exercicio e on e.id = r.exercicio_id
join secao s on s.id = e.secao_id
join curso c on c.id = s.curso_id
join aluno a on a.id = r.aluno_id
group by c.nome, a.nome

Agora vem a minha dúvida... o resultado apresentado foi diferente e eu não consegui enxergar o motivo... Alguém poderia me ajudar a entender? rs

3 respostas

Fala aí Alexandre blz?

Cara não sei exatamente como estão os dados das suas tabelas, pois não fiz o curso.

Mas pude notar que os Joins que você está fazendo estão diferente com relação a resposta do instrutor:

Por exemplo:

Nesse trecho, você está juntando exercício com seção

join exercicio e ON s.id = e.secao_id

Na resposta do instrutor ele juntou exercício com a resposta:

join exercicio e on e.id = r.exercicio_id

Alexandre, Boa tarde!

Além do que foi mencionado pelo Fernando, notei também que você fez um Join com Matrícula e o instrutor não fez tal join.

Dessa forma, se houver algum aluno que tenha respondido ao questionário, mas não tenha matrícula, aparecerá na consulta do instrutor, mas não aparecerá na sua consulta.

Não sei se é possível ter respostas de um aluno sem matrícula, pois como não fiz o curso, desconheço o modelo de dados, mas foi uma diferença que notei.

Grande abraço!

Boa tarde Alexandre!

Ficou esclarecida a sua questão? caso sim, você poderia marcar como resolvida a discussão? caso, contrário, fico à disposição.

Obrigado.