Sobes.tech
Middle

Hoe verschillen vensterfuncties van GROUP BY?

sobes.tech AI

Antwoord van AI

Vensterfuncties en GROUP BY in SQL dienen verschillende doelen, hoewel beide werken met geaggregeerde gegevens.

GROUP BY combineert rijen op basis van de gespecificeerde kolommen en geeft één rij per groep terug. Aggregatiefuncties (SUM, COUNT, etc.) kunnen worden toegepast, maar het resultaat wordt gereduceerd tot één rij per groep.

Vensterfuncties berekenen aggregaten of andere berekeningen over een set rijen, genaamd venster, zonder het aantal geretourneerde rijen te verminderen. Elke rij wordt behouden, maar er wordt een resultaat van de functie toegevoegd dat over het venster is berekend.

Voorbeeld:

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

Hier wordt voor elke rij het gemiddelde salaris per afdeling berekend, maar de rijen worden niet gegroepeerd — we zien alle werknemers met een extra kolom.

In tegenstelling tot GROUP BY maken vensterfuncties het mogelijk om gegevens te analyseren in de context van de groep, zonder details van individuele rijen te verliezen.