Sobes.tech
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, HAVING et SELECT.

HAVING :

  • S'applique aux groupes de lignes.
  • Peut utiliser des fonctions d'agrégation.
  • S'exécute après WHERE et GROUP BY, mais avant SELECT.

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