Traté de jugar con algunas variantes de consulta.
Parece que sqlite tiene errores al usar campos declarados anteriormente en un HAVING anidado expresiones.
En tu ejemplo avg1
bajo el segundo tener siempre es igual a 5.0
Mira:
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 no devuelve nada, pero la ejecución de la siguiente consulta devuelve ambos registros:
...
having not exists (
SELECT 1 AS col1 GROUP BY col1 HAVING avg1 <> 5.0);
No puedo encontrar ningún error similar en sqlite tickets list .