sql / intermediate
Snippet
Filtern von aggregierten Ergebnissen mit der HAVING-Klausel
Während die WHERE-Klausel einzelne Datensätze vor der Aggregation filtert, filtert die HAVING-Klausel zusammengefasste Gruppen nach Ausführung der GROUP BY-Klausel. Dies ermöglicht logische Bedingungen direkt auf Aggregatfunktionen wie COUNT() oder AVG().
snippet.sql
sql
1
2
3
4
SELECT department_id, COUNT(employee_id) AS total_employees, AVG(salary) AS avg_salaryFROM employeesGROUP BY department_idHAVING COUNT(employee_id) >= 5 AND AVG(salary) > 50000;
Erklärung
1
SELECT department_id, COUNT(employee_id) AS total_employees, AVG(salary) AS avg_salary
Ruft Gruppenbezeichner und berechnete Aggregatwerte ab.
2
FROM employees
Identifiziert die zugrundeliegende Tabelle.
3
GROUP BY department_id
Fasst Zeilen mit derselben department_id zu Zusammenfassungsgruppen zusammen.
4
HAVING COUNT(employee_id) >= 5 AND AVG(salary) > 50000;
Wendet Bedingungsfilter auf aggregierte Gruppen nach der GROUP BY-Verarbeitung an.