Sobes.tech
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.