Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

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 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.