Sobes.tech
Middle

V čem se liší okénkové funkce od GROUP BY?

sobes.tech AI

Odpověď od AI

Okenní funkce a GROUP BY v SQL slouží k různým účelům, i když obě pracují s agregovanými daty.

GROUP BY spojuje řádky podle uvedených sloupců a vrací jeden řádek pro každou skupinu. Lze použít agregační funkce (SUM, COUNT atd.), ale výsledek je zredukován na jeden řádek na skupinu.

Okenní funkce vypočítávají agregáty nebo jiné výpočty nad sadou řádků nazývanou okno, aniž by snižovaly počet vrácených řádků. Každý řádek je zachován, ale k němu je přidán výsledek funkce vypočítaný nad oknem.

Příklad:

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

Zde je pro každý řádek vypočítána průměrná mzda podle oddělení, ale řádky nejsou seskupeny — vidíme všechny zaměstnance s přidaným sloupcem.

Na rozdíl od GROUP BY umožňují okenní funkce analyzovat data v kontextu skupiny, aniž by se ztratila detailnost jednotlivých řádků.