SQL HAVING

La condition HAVING en SQL est presque similaire à WHERE à la seule différence que HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou MAX().

Syntaxe

L’utilisation de HAVING s’utilise de la manière suivante :

SELECT colonne1, SUM(colonne2)
FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur

Cela permet donc de SÉLECTIONNER les colonnes DE la table « nom_table » en GROUPANT les lignes qui ont des valeurs identiques sur la colonne « colonne1 » et que la condition de HAVING soit respectée.

Important : HAVING est très souvent utilisé en même temps que GROUP BY bien que ce ne soit pas obligatoire.

Exemple

Pour utiliser un exemple concret, imaginons une table « achat » qui contient les achats de différents clients avec le coût du panier pour chaque achat.

idclienttarifdate_achat
1Pierre1022012-10-23
2Simon472012-10-27
3Marie182012-11-05
4Marie202012-11-14
5Pierre1602012-12-03

Si dans cette table on souhaite récupérer la liste des clients qui ont commandé plus de 40€, toute commandes confondu alors il est possible d’utiliser la requête suivante :

SELECT client, SUM(tarif)
FROM achat
GROUP BY client
HAVING SUM(tarif) > 40

Résultat :

clientSUM(tarif)
Pierre262
Simon47

La cliente « Marie » a cumulée 38€ d’achat (un achat de 18€ et un autre de 20€) ce qui est inférieur à la limite de 40€ imposée par HAVING. En conséquent cette ligne n’est pas affichée dans le résultat.

Partager