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