Sobes.tech
Middle

Aký je rozdiel medzi oknovou funkciou a agregačnou funkciou v SQL?

sobes.tech AI

Odpoveď od AI

Aritmetická funkcia v SQL (napríklad SUM, AVG, COUNT) vypočíta jednu konečnú hodnotu pre skupinu riadkov a vráti jeden riadok na skupinu. Napríklad SUM(salary) vypočíta súčet platov pre celú skupinu.

Funkcia okna (window function) tiež pracuje so skupinami riadkov, ale vracia výsledok pre každý riadok s ohľadom na kontext okna (súbor riadkov okolo aktuálneho). Napríklad SUM(salary) OVER (PARTITION BY department) vráti súčet platov podľa oddelenia pre každý riadok, bez zníženia výsledku na jeden riadok.

Príklad:

SELECT employee_id, department, salary,
       SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;

Tu bude pre každý riadok zobrazený súčet platov v oddelení, nie jeden riadok na oddelenie, ako pri použití agregačnej funkcie s GROUP BY.