La requête SELECT col1, aggrégation(col2) FROM R GROUP BY col1 HAVING prédicat(aggrégation(col2))
est exécutée suivant l'algorithme suivant :
ENTRÉE : une relation R(col1, col2, ...)
SORTIE : une relation S(col1, valAggrégée)
VARIABLE
catégorie[] un tableau de données de même type que col1;
valAggrégée une valeur issue de la fonction aggrégation;
cat une valeur de catégorie[];
DÉBUT
S := ∅
catégorie[] := SELECT DISTINCT col1 FROM R;
POUR CHAQUE cat DANS catégorie[] FAIRE
valAggrégée := SELECT aggrégation(col2) FROM R WHERE col1=cat;
SI prédicat(aggrégation(col2)) ALORS
S := S ∪ (cat, valAggrégée);
FIN SI
FIN POUR
RETOURNER S;
FIN