Miben különböznek az ablakfüggvények a GROUP BY-tól?
sobes.tech MI
Válasz az MI-től
Az ablakfüggvények és a GROUP BY SQL-ben különböző célokra szolgálnak, bár mindkettő az aggregált adatokkal dolgozik.
GROUP BY összefogja a sorokat a megadott oszlopok szerint, és minden csoporthoz egy sort ad vissza. Alkalmazhatók aggregáló függvények (SUM, COUNT stb.), de az eredmény minden csoport esetében egy sorra redukálódik.
Ablakfüggvények aggregátumokat vagy más számításokat végeznek egy ablaknak nevezett sorhalmazon, anélkül, hogy csökkentenék a visszaadott sorok számát. Minden sor megmarad, de hozzáadódik az ablakon belüli számítás eredménye.
Példa:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Itt minden sorhoz kiszámítják az átlagos fizetést a részlegen belül, de a sorokat nem csoportosítják — minden alkalmazottat látunk egy kiegészítő oszloppal.
A GROUP BY-tól eltérően az ablakfüggvények lehetővé teszik az adatok elemzését a csoport kontextusában, anélkül, hogy elveszítenénk az egyes sorok részleteit.