sql / intermediate
Snippet
Bedingtes Filtern von Aggregaten mit der HAVING-Klausel
Während die WHERE-Klausel einzelne Zeilen vor der Aggregation filtert, filtert die HAVING-Klausel zusammengefasste Gruppen nach der GROUP BY-Operation basierend auf berechneten Aggregatausdrücken wie COUNT oder AVG.
snippet.sql
sql
1
2
3
4
5
SELECT department_id, COUNT(employee_id) AS staff_count, AVG(salary) AS avg_salaryFROM employeesWHERE status = 'ACTIVE'GROUP BY department_idHAVING COUNT(employee_id) >= 5 AND AVG(salary) > 50000;
Erklärung
1
SELECT department_id, COUNT(employee_id) AS staff_count, AVG(salary) AS avg_salary
Wählt den Gruppen-Bezeichner aus und definiert Aliase für Aggregatberechnungen.
2
FROM employees
Gibt die zugrundeliegende Mitarbeiter-Tabelle als Datenquelle an.
3
WHERE status = 'ACTIVE'
Filtert einzelne Datensätze vor dem Durchführen von Gruppierungen.
4
GROUP BY department_id
Fasst vorgefilterte Zeilen zu aggregierten Gruppen pro Abteilung zusammen.
5
HAVING COUNT(employee_id) >= 5 AND AVG(salary) > 50000;
Wertet Aggregatbedingungen aus, um Gruppen zu verwerfen, die Mindestanzahl und Durchschnittsgehalt nicht erfüllen.