0
respostas

Group By com resultados diferentes do instrutor

Olá,

Realizei o curso Oracle II e percebi uma divergência entre a minha solução e a do instrutor.

No módulo 2, mais especificamente no exercício de group by, a questão era:

Exiba a média das notas por curso.

A solução dada foi a seguinte:

select c.nome, avg(n.nota) as media 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
group by c.nome;

Esta query nos dá o seguinte resultado:

NOME                           |MEDIA                                   |
-------------------------------|----------------------------------------|
Scrum e metodos ageis          |5.77777777777777777777777777777777777778|
C# e orientacao a objetos      |4.85714285714285714285714285714285714286|
Desenvolvimento web com VRaptor|                                       8|
SQL e banco de dados           |                                     6.1|

Entretanto, com a seguinte query temos a média do curso Desenvolvimento mobile com Android:

select c.nome, avg(n.nota) as media from aluno a 
    join matricula m on m.aluno_id = a.id
    join curso c on m.curso_id = c.id
    join resposta r on r.aluno_id = a.id
    join nota n on n.resposta_id = r.id
group by c.nome;

Nos trazendo o seguinte resultado:

NOME                              |MEDIA                                   |
----------------------------------|----------------------------------------|
C# e orientacao a objetos         |5.74074074074074074074074074074074074074|
Scrum e metodos ageis             |5.77777777777777777777777777777777777778|
Desenvolvimento web com VRaptor   |                                    6.25|
Desenvolvimento mobile com Android|4.85714285714285714285714285714285714286|
SQL e banco de dados              |6.27272727272727272727272727272727272727|

Gostaria de uma ajuda para entender onde estou errando.

Muito obrigado.