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)
- Nouveautés de l’interpréteur de formules de calcul (v1.1) - dimanche 3 novembre 2024
- Dématérialisation de la facturation : nouvelles mentions obligatoires - lundi 28 octobre 2024
- Interpréteur de formules de calcul en Python - dimanche 13 octobre 2024
- Les données de la facturation électronique - mercredi 9 octobre 2024
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024