Passer au contenu principal
Permet de filtrer les résultats d’agrégation produits par GROUP BY. Cette clause est similaire à WHERE, à la différence que WHERE est exécutée avant l’agrégation, tandis que HAVING l’est après. Il est possible de référencer dans la clause HAVING, via leur alias, les résultats d’agrégation de la clause SELECT. La clause HAVING peut également filtrer les résultats d’agrégations supplémentaires qui ne sont pas renvoyés dans les résultats de la requête.

Exemple

Si vous avez une table sales comme ceci :
CREATE TABLE sales
(
    region String,
    salesperson String,
    amount Float64
)
ORDER BY (region, salesperson);
Vous pouvez l’interroger comme suit :
SELECT
    region,
    salesperson,
    sum(amount) AS total_sales
FROM sales
GROUP BY
    region,
    salesperson
HAVING total_sales > 10000
ORDER BY total_sales DESC;
Cette requête liste les commerciaux dont le total des ventes dans leur région dépasse 10 000.

Limites

HAVING ne peut pas être utilisé sans agrégation. Utilisez WHERE à la place.
Dernière modification le 25 juin 2026