Cu ce se deosebesc funcțiile de fereastră de GROUP BY?
sobes.tech AI
Răspuns de la AI
Funcțiile de fereastră și GROUP BY în SQL servesc scopuri diferite, deși ambele lucrează cu date agregate.
GROUP BY combină rândurile pe coloanele specificate și returnează câte un rând pentru fiecare grup. Se pot aplica funcții agregate (SUM, COUNT etc.), dar rezultatul se reduce la un singur rând pe grup.
Funcțiile de fereastră calculează agregate sau alte calcule pe un set de rânduri numit fereastră, fără a reduce numărul de rânduri returnate. Fiecare rând se păstrează, dar i se adaugă rezultatul funcției calculate pe fereastră.
Exemplu:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Aici, pentru fiecare rând, se calculează salariul mediu pe departament, dar rândurile nu sunt grupate — vedem toți angajații cu o coloană suplimentară.
Spre deosebire de GROUP BY, funcțiile de fereastră permit analizarea datelor în contextul grupului, fără a pierde detalii despre rândurile individuale.