Junior
Quelle est la différence entre les clauses WHERE et HAVING en SQL?
sobes.tech IA
Réponse de l'IA
WHERE filtre les lignes avant le regroupement. HAVING filtre les groupes créés avec GROUP BY, après le regroupement.
WHERE :
- S'applique aux lignes individuelles.
- Ne peut pas utiliser de fonctions d'agrégation (
COUNT,SUM,AVG,MIN,MAX). - S'exécute avant
GROUP BY,HAVINGetSELECT.
HAVING :
- S'applique aux groupes de lignes.
- Peut utiliser des fonctions d'agrégation.
- S'exécute après
WHEREetGROUP BY, mais avantSELECT.
Exemple :
Trouver les clients de la ville 'Moscou' (où WHERE) dont le montant total des commandes dépasse 1000 (où HAVING).
SELECT customer_id, SUM(order_amount) -- Sélectionne l'ID client et la somme de ses commandes
FROM orders -- Depuis la table des commandes
WHERE city = 'Moscou' -- Filtre les lignes avant le regroupement, ne garde que les commandes de Moscou
GROUP BY customer_id -- Regroupe les lignes par ID client
HAVING SUM(order_amount) > 1000; -- Filtre les groupes, ne garde que ceux où la somme des commandes > 1000