Junior
Care este diferența dintre instrucțiunile WHERE și HAVING în SQL?
sobes.tech AI
Răspuns de la AI
WHERE se aplică înainte de grupare și filtrează rândurile rezultate din FROM. HAVING se aplică după grupare și filtrează grupurile formate cu GROUP BY.
Exemplu:
Presupunem că avem un tabel orders cu coloanele customer_id, order_date și amount.
Găsiți toți clienții ale căror sume totale de comenzi depășesc 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Găsiți toate comenzile cu o sumă mai mare de 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Tabel comparativ:
| Caracteristică | WHERE | HAVING |
|---|---|---|
| Aplicație | Pe rândurile individuale înainte de grupare | Pe grupurile de rânduri după grupare |
| Utilizează | Coloane din FROM |
Funcții agregate și coloane din GROUP BY |
| Se execută | Înainte de GROUP BY |
După GROUP BY |
| Funcții agregate | Nu pot fi utilizate direct | Pot fi utilizate |