Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ των συνθηκών HAVING και WHERE κατά τη δημιουργία ερωτημάτων SQL;

sobes.tech AI

Απάντηση από AI

Στο SQL, οι συνθήκες WHERE και HAVING χρησιμοποιούνται για το φιλτράρισμα δεδομένων, αλλά εφαρμόζονται σε διαφορετικά στάδια της επεξεργασίας του ερωτήματος:

  • WHERE φιλτράρει τις γραμμές πριν από την ομαδοποίηση. Χρησιμοποιείται για τον περιορισμό του συνόλου δεδομένων που θα υποβληθεί σε άθροιση.
  • HAVING φιλτράρει τις ομάδες μετά την εφαρμογή συναρτήσεων άθροισης (π.χ., SUM, COUNT).

Παράδειγμα:

SELECT τμήμα, COUNT(*) ως αριθμός_υπαλλήλων
FROM υπάλληλοι
WHERE μισθός > 50000       -- φιλτράρισμα με βάση τον μισθό πριν από την ομαδοποίηση
GROUP BY τμήμα
HAVING COUNT(*) > 10;        -- φιλτράρισμα ομάδων με περισσότερους από 10 υπαλλήλους

Εδώ, αρχικά επιλέγονται οι υπάλληλοι με μισθό πάνω από 50000 (WHERE), στη συνέχεια τα δεδομένα ομαδοποιούνται κατά τμήμα, και μόνο τα τμήματα με περισσότερους από 10 υπαλλήλους περνούν το φίλτρο HAVING.