J'ai essayé de jouer avec certaines variantes de requête.
Il semble que sqlite ait des erreurs dans l'utilisation des champs déclarés précédents dans un HAVING imbriqué expressions.
Dans votre exemple avg1
sous seconde ayant est toujours égal à 5.0
Regardez :
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);
Celle-ci ne renvoie rien, mais l'exécution de la requête suivante renvoie les deux enregistrements :
...
having not exists (
SELECT 1 AS col1 GROUP BY col1 HAVING avg1 <> 5.0);
Je ne trouve aucun bogue similaire dans la liste des tickets sqlite .