Sinceramente, não sei de onde surgiu os valores da tua consulta, mas vou abrir teus olhos em relação a isto:
O exercício pede:
Exiba a média das notas por aluno, além de uma coluna com a diferença entre a média do aluno e a média geral. Use sub-queries para isso.
Então você pensa: como vou fazer isso? Primeira coisa que vem a mente é, tem nota que respondeu as questões. Assim, fazendo um
select * from resposta
eu sei pelos IDs os alunos que responderam as questões. Para que fique mais claro, faça
select a.nome from aluno a join resposta r on r.aluno_id = a.id
Voltando ao que o exercício pede: média dos alunos e uma coluna da diferença de suas médias para a média geral. Eu sei que a tabela nota tem relação com a tabela resposta e esta tem relação com a tabela aluno, em nenhum momento a relação com a tabela matrícula é pedida, ainda mais por que eu não quero saber de alunos matriculados e sim da média de alunos.
Vou te mostrar a minha resposta pra este exercício, espero que te ajude, mas, pelo que entendi, o problema todo surgiu no momento em que você fez o vínculo com a tabela matrícula.
select a.nome as 'Aluno', avg(n.nota) as 'Média do aluno',
(avg(n.nota) - (select avg(nota.nota) from nota)) as 'Diferença da média geral',
(select avg(nota.nota) from nota) as 'Média Geral' from nota n
join resposta r on n.resposta_id = r.id
join aluno a on r.aluno_id = a.id
group by a.nome
order by a.nome;