Sobes.tech
Middle

Was ist der Unterschied zwischen einer Fensterfunktion und einer Aggregatfunktion in SQL?

sobes.tech KI

Antwort von AI

Aggregatfunktionen in SQL (z.B. SUM, AVG, COUNT) berechnen einen einzigen Endwert für eine Gruppe von Zeilen und geben eine Zeile pro Gruppe zurück. Zum Beispiel berechnet SUM(salary) die Summe der Gehälter für die gesamte Gruppe.

Fensterfunktionen (window functions) arbeiten ebenfalls mit Gruppen von Zeilen, liefern aber für jede Zeile ein Ergebnis, wobei der Kontext des Fensters (der Satz von Zeilen um die aktuelle Zeile) berücksichtigt wird. Zum Beispiel gibt SUM(salary) OVER (PARTITION BY department) die Summe der Gehälter pro Abteilung für jede Zeile zurück, ohne das Ergebnis auf eine Zeile zu reduzieren.

Beispiel:

SELECT employee_id, department, salary,
       SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;

Hier wird für jede Zeile die Summe der Gehälter in der Abteilung angezeigt, anstatt eine Zeile pro Abteilung, wie bei der Verwendung von Aggregatfunktionen mit GROUP BY.