Junior
Ποια είναι η διαφορά μεταξύ των εντολών WHERE και HAVING σε SQL;
sobes.tech AI
Απάντηση από AI
Το WHERE εφαρμόζεται πριν από την ομαδοποίηση και φιλτράρει τις γραμμές του αποτελέσματος FROM. Το HAVING εφαρμόζεται μετά την ομαδοποίηση και φιλτράρει τις ομάδες που σχηματίζονται με το GROUP BY.
Παράδειγμα:
Ας υποθέσουμε ότι έχουμε έναν πίνακα orders με στήλες customer_id, order_date και amount.
Βρείτε όλους τους πελάτες των οποίων το συνολικό ποσό παραγγελιών υπερβαίνει τα 1000:
SELECT customer_id, SUM(amount)
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 1000;
Βρείτε όλες τις παραγγελίες με ποσό μεγαλύτερο από 1000:
SELECT customer_id, order_date, amount
FROM orders
WHERE amount > 1000;
Πίνακας σύγκρισης:
| Χαρακτηριστικό | WHERE | HAVING |
|---|---|---|
| Εφαρμογή | Σε μεμονωμένες γραμμές πριν από την ομαδοποίηση | Σε ομάδες γραμμών μετά την ομαδοποίηση |
| Χρησιμοποιεί | Στήλες από το FROM |
Συναρτήσεις σύνοψης και στήλες από το GROUP BY |
| Εκτελείται | Πριν από το GROUP BY |
Μετά το GROUP BY |
| Συναρτήσεις σύνοψης | Δεν μπορεί να χρησιμοποιηθεί άμεσα | Μπορεί να χρησιμοποιηθεί |