4.4 — Filtrer les groupes avec HAVING
Ce que vous allez apprendre
- Comment utiliser la clause
HAVING
pour filtrer les groupes en SQL - Comparaison avec le filtrage des résultats dans un tableau croisé Excel
Pourquoi HAVING ?
Voici les données de vente que nous allons utiliser dans nos exemples :
Product | Amount | SaleDate |
---|---|---|
Apples | 120 | 2024-05-01 |
Apples | 90 | 2024-05-02 |
Oranges | 80 | 2024-05-01 |
Oranges | 70 | 2024-05-03 |
Bananas | 60 | 2024-05-02 |
Bananas | 50 | 2024-05-03 |
Pears | 40 | 2024-05-01 |
Pears | 30 | 2024-05-03 |
Dans Excel, vous pouvez filtrer un tableau croisé pour n’afficher que les produits dont les ventes dépassent un certain montant. En SQL, utilisez HAVING
après le regroupement.
Exemple : n’afficher que les produits avec un total des ventes > 200
sql
SELECT Product, SUM(Amount) AS Total_Sales
FROM sales
GROUP BY Product
HAVING SUM(Amount) > 200;
HAVING
fonctionne commeWHERE
, mais sur les résultats groupés/agrégés.
Combiner WHERE et HAVING
- Utilisez
WHERE
pour filtrer avant le regroupement. - Utilisez
HAVING
pour filtrer après l’agrégation.
Exemple : inclure uniquement les ventes de mai, puis afficher les produits à fort total
sql
SELECT Product, SUM(Amount) AS Total_Sales
FROM sales
WHERE SaleDate >= '2024-05-01' AND SaleDate <= '2024-05-31'
GROUP BY Product
HAVING SUM(Amount) > 200;
Astuce : vous pouvez aussi utiliser l’alias de la colonne aggrégée dans HAVING
:
sql
...
HAVING Total_Sales > 200;
Points clés
HAVING
filtre après le regroupement,WHERE
avant.- Combinez-les pour des analyses avancées.