Les clauses WHERE et HAVING ont des usages en apparence similaires mais en réalité leurs rôles sont différents.
SELECT [Stock N].Référence, [Stock N].Désignation, Sum([Stock N].Quantité) AS SommeDeQuantité FROM [Stock N] WHERE [Stock N].PU>50 GROUP BY [Stock N].Référence, [Stock N].Désignation HAVING (((Sum([Stock N].Quantité))>1000));
Ainsi, leurs fonctions se résument ainsi :
- WHERE : La clause WHERE conditionne l’extraction de données au respect de certains critères, cf détails sur la rédaction de requêtes SQL avec la clause WHERE ;
- HAVING : La clause HAVING positionnée à la fin d’une requête regroupement permet d’ajouter un critère (à l’aide d’opérateurs de comparaison) afin de restreindre le nombre de lignes compris dans le résultat de la requête.
Ces deux clauses sont combinables dans une requête regroupement (et uniquement dans ce type de requête). Dans ce cas, la clause WHERE conditionne les données avant le regroupement et HAVING conditionne les données une fois regroupées. Dans la construction de la requête, WHERE se positionne avant GROUP BY et HAVING après.
Dans l’exemple qui précède, la requête va traiter les données de la table Stock (FROM) dont le prix unitaire est supérieur à 50 € (WHERE) puis regrouper (GROUP BY) les références en stock (répondant à ce critère de prix) en additionnant les quantités par référence (SUM) et enfin ne donner en résultat que les références dont la quantité est supérieure à 1000 (clause HAVING).
Approfondir le sujet : Maîtriser le langage de requête SQL / Analyse de données


Derniers articles parBenoît RIVIERE (voir tous)
- L’IA générative : un levier stratégique pour les professionnels du chiffre - lundi 2 juin 2025
- Véhicules de fonction : la TVA devient-elle enfin déductible ? - lundi 12 mai 2025
- Cybermenaces 2024 : un panorama inquiétant des attaques informatiques - lundi 5 mai 2025
- IA & deepfake : Peut-on encore faire confiance à ce qu’on voit ? - vendredi 11 avril 2025
- Deepfake & arnaque : comment une simple question a sauvé Ferrari - samedi 29 mars 2025