Sobes.tech
Middle

Ποια είναι η διαφορά μεταξύ WHERE και HAVING;

sobes.tech AI

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

Der Hauptunterschied zwischen WHERE und HAVING in SQL:

  • WHERE filtert Zeilen vor der Gruppierung. Es wird auf einzelne Datensätze angewendet und beschränkt den Datensatz, der aggregiert wird.

  • HAVING filtert die Gruppen nach der Ausführung von Aggregatfunktionen (z.B. SUM, COUNT). Es wird auf die Ergebnisse der Gruppierung angewendet.

Beispiel:

SELECT abteilung, COUNT(*) als anzahl_mitarbeiter
FROM mitarbeiter
WHERE gehalt > 50000  -- filtert Mitarbeiter mit Gehalt über 50000
GROUP BY abteilung
HAVING COUNT(*) > 10     -- wählt Abteilungen mit mehr als 10 Mitarbeitern

Hier werden zuerst Mitarbeiter mit Gehalt über 50000 ausgewählt (WHERE), dann werden sie nach Abteilungen gruppiert, und danach werden nur die Abteilungen ausgewählt, in denen die Anzahl der Mitarbeiter größer als 10 ist (HAVING).