Junior — Middle
Ποια είναι η διαφορά μεταξύ των τελεστών HAVING και WHERE σε SQL και σε ποιες περιπτώσεις πρέπει να χρησιμοποιούνται;
sobes.tech AI
Απάντηση από AI
Ο τελεστής WHERE χρησιμοποιείται για το φιλτράρισμα των γραμμών πριν από την ομαδοποίηση των δεδομένων. Επιλέγει τις γραμμές που θα συμμετάσχουν σε επόμενες λειτουργίες, όπως οι συναρτήσεις σύνοψης.
Ο τελεστής HAVING εφαρμόζεται για το φιλτράρισμα ήδη ομαδοποιημένων δεδομένων, δηλαδή μετά την εκτέλεση του GROUP BY. Επιτρέπει το φιλτράρισμα των ομάδων βάσει συνθηκών σύνοψης.
Παράδειγμα:
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE salary > 50000 -- φιλτράρισμα γραμμών βάσει μισθού
GROUP BY department
HAVING COUNT(*) > 5 -- φιλτράρισμα ομάδων βάσει αριθμού εργαζομένων
Συνοπτικά:
- Το WHERE φιλτράρει μεμονωμένες εγγραφές πριν από την ομαδοποίηση.
- Το HAVING φιλτράρει τις ομάδες μετά την ομαδοποίηση.
Χρησιμοποιήστε το WHERE για συνθήκες σε μεμονωμένα πεδία, το HAVING για συνθήκες σε συναρτήσεις σύνοψης.