Quando tentei executar o código do exemplo do capítulo 6,
SELECT
a.nome,
AVG(n1.nota) AS media,
AVG(n1.nota) - (SELECT
AVG(n2.nota)
FROM
nota n2
JOIN
resposta r2 ON n2.resposta_id = r2.id
WHERE
r2.aluno_id <> a.id) AS diferenca
FROM
nota n1
JOIN
resposta r ON r.id = n1.resposta_id
JOIN
exercicio e ON e.id = r.exercicio_id
JOIN
secao s ON s.id = e.secao_id
JOIN
aluno a ON a.id = r.aluno_id
GROUP BY a.nome;
obtive o seguinte erro:
Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'sql2.a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Ok.
Verificando no "pai dos burros" (Stack overflow : http://stackoverflow.com/questions/25800411/mysql-isnt-in-group-by) e relendo com calma a mensagem de erro, percebi que "a.id" não estava incluído no GROUP BY.
Peço a gentileza de corrigirem o exemplo do capítulo...