Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

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

Παράδειγμα:

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

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