Sobes.tech
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).