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
GROUPBY column1;Bereitgestellt von
In dieser Syntax gruppiert GROUP BY column1 die Ergebnismenge nach den Werten in column1.
Beispiele
1. Grundlegende Gruppierung
SELECT department,COUNT(*)FROM employees
GROUPBY department;Bereitgestellt von
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
GROUPBY department;Bereitgestellt von
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
GROUPBY department, job_title;Bereitgestellt von
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
GROUPBY department
HAVINGCOUNT(*)>10;Bereitgestellt von
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 BY mit ORDER BY, um deine aggregierten Ergebnisse für eine einfachere Analyse zu sortieren. Beachte, dass ORDER BY nach GROUP BY verarbeitet wird, was sich auf die Leistung und die Ergebnisse auswirken kann.
Verwende HAVING zum Filtern von Gruppen. Verwende die HAVING Klausel, um Gruppen nach der Aggregationsstufe zu filtern, im Gegensatz zu WHERE, die Zeilen vor der Aggregation filtert.
Achte auf die richtige Gruppierung. Schließe immer alle nicht aggregierten Spalten aus der SELECT Anweisung in die GROUP BY Klausel ein, um Fehler zu vermeiden.
Berücksichtige die Leistung bei großen Datensätzen. Sei dir bewusst, dass die Verwendung von GROUP BY bei großen Datensätzen die Leistung beeinträchtigen kann. Erwäge, die in GROUP BY verwendeten Spalten zu indizieren, um die Ausführung von Abfragen zu optimieren.
Die
GROUP BYKlausel in PostgreSQL wird verwendet, um identische Daten in Gruppen zu ordnen. Sie wird oft mit Aggregatfunktionen wieCOUNT,SUM,AVG,MAXoderMINverwendet, um Operationen auf jeder Datengruppe durchzuführen.Verwendung
Die
GROUP BYKlausel wird verwendet, wenn du Zeilen, die in bestimmten Spalten die gleichen Werte haben, zu Sammelzeilen zusammenfassen willst. Sie folgt der AnweisungSELECTund allen Aggregatfunktionen, um zu bestimmen, wie die Daten gruppiert werden sollen.In dieser Syntax gruppiert
GROUP BY column1die Ergebnismenge nach den Werten incolumn1.Beispiele
1. Grundlegende Gruppierung
In diesem Beispiel wird die Anzahl der Beschäftigten in jeder Abteilung gezählt, indem die Ergebnisse anhand der Spalte
departmentgruppiert werden.2. Gruppierung mit SUMME
Diese Abfrage berechnet das Gesamtgehalt, das pro Abteilung gezahlt wird, gruppiert die Zeilen nach
departmentund summiert die Spaltesalary.3. Gruppierung mit mehreren Spalten
Hier gruppiert die Abfrage die Daten sowohl nach
departmentals auch nachjob_titleund berechnet das Durchschnittsgehalt für jede einzelne Kombination aus Abteilung und Berufsbezeichnung.4. Gruppierung mit HAVING
In diesem Beispiel werden die gruppierten Daten mit Hilfe der
HAVINGKlausel so gefiltert, dass nur die Abteilungen mit mehr als 10 Mitarbeitern enthalten sind.Tipps und bewährte Praktiken
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.HAVINGKlausel, um Gruppen nach der Aggregationsstufe zu filtern, im Gegensatz zuWHERE, die Zeilen vor der Aggregation filtert.SELECTAnweisung in dieGROUP BYKlausel ein, um Fehler zu vermeiden.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.