Middle
Jaký je rozdíl mezi oknovou funkcí a agregační funkcí v SQL?
sobes.tech AI
Odpověď od AI
Agregační funkce v SQL (například SUM, AVG, COUNT) vypočítá jednu konečnou hodnotu pro skupinu řádků a vrátí jeden řádek na skupinu. Například SUM(salary) spočítá součet mezd v celé skupině.
Okénková funkce (window function) také pracuje se skupinami řádků, ale vrací výsledek pro každý řádek s ohledem na kontext okna (soubor řádků kolem aktuálního). Například SUM(salary) OVER (PARTITION BY department) vrátí součet mezd podle oddělení pro každý řádek, aniž by výsledek zjednodušila na jeden řádek.
Příklad:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Zde bude pro každý řádek zobrazen součet mezd v oddělení, nikoli jeden řádek na oddělení, jako při použití agregační funkce s GROUP BY.