Skip to content

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 :

ProductAmountSaleDate
Apples1202024-05-01
Apples902024-05-02
Oranges802024-05-01
Oranges702024-05-03
Bananas602024-05-02
Bananas502024-05-03
Pears402024-05-01
Pears302024-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 comme WHERE, 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.