Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida Aula03-05

Boa tarde, Tentei fazer o exercício com o EXISTS porém o resultado saiu como se eu não tivesse usado where.

select c.nome, avg(n.nota) from nota n join resposta r on n.resposta_id = r.id join aluno a on a.id = r.aluno_id join exercicio e on r.exercicio_id = e.id join secao s on e.secao_id = s.id join curso c on s.curso_id = c.id where EXISTS (select nome from aluno where nome like '%silva%' or '%santos%') group by c.nome;
+-----------------------+-------------+
| nome                  | avg(n.nota) |
+-----------------------+-------------+
| PHP e MySql           |      4.8571 |
| Scrum e métodos ágeis |      5.7778 |
| SQL e banco de dados  |      6.2727 |
+-----------------------+-------------+
3 rows in set, 1 warning (0.00 sec)

Não entendi onde errei.

2 respostas

Oi Vitor, tudo bem ?

Aparentemente está certo, você pediu o nome do curso e a média da nota.

solução!

Está errado. Era pra retornar apenas a média de notas de alunos que tenham silva ou santos no nome.

O código abaixo faz a consulta certa.

 select c.nome, avg(n.nota), a.nome from nota n join resposta r on n.resposta_id = r.id join aluno a on a.id = r.aluno_id join exercicio e on r.exercicio_id = e.id join secao s on e.secao_id = s.id join curso c on s.curso_id = c.id where a.nome like '%silva%' or a.nome like '%santos%' group by c.nome;
+-----------------------+-------------+----------------+
| nome                  | avg(n.nota) | nome           |
+-----------------------+-------------+----------------+
| Scrum e métodos ágeis |      5.7778 | Alberto Santos |
| SQL e banco de dados  |      6.2857 | João da Silva  |
+-----------------------+-------------+----------------+
2 rows in set (0.00 sec)