Tentei mexer com algumas variantes de query.
Parece que o sqlite tem erros no uso de campos declarados anteriores em um HAVING aninhado expressões.
No seu exemplo
avg1
sob o segundo tendo é sempre igual a 5,0 Olhar:
select T1.id, avg(T1.score) avg1
from foo T1
group by T1.id
having not exists (
SELECT 1 AS col1 GROUP BY col1 HAVING avg1 = 5.0);
Este não retorna nada, mas a execução da consulta a seguir retorna os dois registros:
...
having not exists (
SELECT 1 AS col1 GROUP BY col1 HAVING avg1 <> 5.0);
Não consigo encontrar nenhum bug semelhante na lista de tickets sqlite .