PostgreSQL GROUP BY
Die GROUP BY Klausel in PostgreSQL wird verwendet, um identische Daten in Gruppen zu ordnen. Sie wird oft mit Aggregatfunktionen wie COUNT, SUM, AVG, MAX oder MIN verwendet, um Operationen auf jeder Datengruppe durchzuführen.
Verwendung
Die GROUP BY Klausel wird verwendet, wenn du Zeilen, die in bestimmten Spalten die gleichen Werte haben, zu Sammelzeilen zusammenfassen willst. Sie folgt der Anweisung SELECT und allen Aggregatfunktionen, um zu bestimmen, wie die Daten gruppiert werden sollen.
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
In dieser Syntax gruppiert GROUP BY column1 die Ergebnismenge nach den Werten in column1.
Beispiele
1. Grundlegende Gruppierung
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
In diesem Beispiel wird die Anzahl der Beschäftigten in jeder Abteilung gezählt, indem die Ergebnisse anhand der Spalte department gruppiert werden.
2. Gruppierung mit SUMME
SELECT department, SUM(salary)
FROM employees
GROUP BY department;
Diese Abfrage berechnet das Gesamtgehalt, das pro Abteilung gezahlt wird, gruppiert die Zeilen nach department und summiert die Spalte salary.
3. Gruppierung mit mehreren Spalten
SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title;
Hier gruppiert die Abfrage die Daten sowohl nach department als auch nach job_title und berechnet das Durchschnittsgehalt für jede einzelne Kombination aus Abteilung und Berufsbezeichnung.
4. Gruppierung mit HAVING
SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;
In diesem Beispiel werden die gruppierten Daten mit Hilfe der HAVING Klausel so gefiltert, dass nur die Abteilungen mit mehr als 10 Mitarbeitern enthalten sind.
Tipps und bewährte Praktiken
- Wähle nur die notwendigen Spalten aus. Verwende nur die Spalten, nach denen du gruppieren oder aggregieren willst, um eine effiziente Ausführung der Abfrage zu gewährleisten.
- Bestelle deine Ergebnisse. Kombiniere
GROUP BYmitORDER BY, um deine aggregierten Ergebnisse für eine einfachere Analyse zu sortieren. Beachte, dassORDER BYnachGROUP BYverarbeitet wird, was sich auf die Leistung und die Ergebnisse auswirken kann. - Verwende HAVING zum Filtern von Gruppen. Verwende die
HAVINGKlausel, um Gruppen nach der Aggregationsstufe zu filtern, im Gegensatz zuWHERE, die Zeilen vor der Aggregation filtert. - Achte auf die richtige Gruppierung. Schließe immer alle nicht aggregierten Spalten aus der
SELECTAnweisung in dieGROUP BYKlausel ein, um Fehler zu vermeiden. - Berücksichtige die Leistung bei großen Datensätzen. Sei dir bewusst, dass die Verwendung von
GROUP BYbei großen Datensätzen die Leistung beeinträchtigen kann. Erwäge, die inGROUP BYverwendeten Spalten zu indizieren, um die Ausführung von Abfragen zu optimieren.