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.
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.
HAVING ne peut pas être utilisé sans agrégation. Utilisez WHERE à la place. Dernière modification le 25 juin 2026