Sobes.tech
Middle

Wat is het verschil tussen een vensterfunctie en een aggregatiefunctie in SQL?

sobes.tech AI

Antwoord van AI

De aggregatiefunctie in SQL (bijvoorbeeld SUM, AVG, COUNT) berekent één eindwaarde voor een groep rijen en geeft één rij per groep terug. Bijvoorbeeld, SUM(salary) berekent de som van de salarissen voor de hele groep.

De vensterfunctie (window function) werkt ook met groepen rijen, maar geeft voor elke rij een resultaat terug, rekening houdend met de context van het venster (de set rijen rond de huidige rij). Bijvoorbeeld, SUM(salary) OVER (PARTITION BY department) geeft de som van de salarissen per afdeling voor elke rij, zonder het resultaat te reduceren tot één rij.

Voorbeeld:

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

Hier wordt voor elke rij de som van de salarissen in de afdeling getoond, in plaats van één rij per afdeling, zoals bij het gebruik van een aggregatiefunctie met GROUP BY.