Sobes.tech
Middle

Worin unterscheiden sich Fensterfunktionen von GROUP BY?

sobes.tech KI

Antwort von AI

Fensterfunktionen und GROUP BY in SQL dienen unterschiedlichen Zwecken, arbeiten aber beide mit aggregierten Daten.

GROUP BY fasst Zeilen nach angegebenen Spalten zusammen und gibt eine Zeile pro Gruppe zurück. Es können Aggregatfunktionen (SUM, COUNT usw.) angewendet werden, das Ergebnis wird jedoch auf eine Zeile pro Gruppe reduziert.

Fensterfunktionen berechnen Aggregate oder andere Berechnungen über einen Satz von Zeilen, der als Fenster bezeichnet wird, ohne die Anzahl der zurückgegebenen Zeilen zu verringern. Jede Zeile bleibt erhalten, aber es wird das Ergebnis der Funktion, berechnet über das Fenster, hinzugefügt.

Beispiel:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;

Hier wird für jede Zeile das durchschnittliche Gehalt pro Abteilung berechnet, aber die Zeilen werden nicht gruppiert — wir sehen alle Mitarbeiter mit einer zusätzlichen Spalte.

Im Gegensatz zu GROUP BY erlauben Fensterfunktionen die Analyse von Daten im Kontext der Gruppe, ohne die Detailgenauigkeit einzelner Zeilen zu verlieren.