SQL 2 – Groupement et jointures

Définition :

  • WHERE : filtre les lignes avant le regroupement (avant le GROUP BY).
  • HAVING : filtre les groupes après le regroupement (après le GROUP BY).

 

Explication :

  • WHERE agit sur les données brutes.
  • HAVING agit sur les résultats agrégés, comme SUM, AVG, COUNT, etc.

 

Exemple SQL :
Table Ventes :

id vendeur produit montant
1 Claire Livre 30
2 Marc Stylo 10
3 Claire Cahier 15
4 Julien Livre 25
5 Marc Cahier 20
  • Avec WHERE : filtrer les ventes supérieures à 20 €

SELECT * FROM Ventes WHERE montant > 20;

Résultat :

id vendeur produit montant
1 Claire Livre 30
4 Julien Livre 25
  • Avec HAVING : filtrer les vendeurs dont le total des ventes > 40 €

SELECT vendeur, SUM(montant) AS total_ventes FROM Ventes GROUP BY vendeur HAVING SUM(montant) > 40;

Résultat :

vendeur total_ventes
Claire 45

 

Conclusion :

  • WHERE → filtre les lignes individuelles.
  • HAVING → filtre les groupes après aggregation.