Middle
Каква е разликата между функция за прозорец и агрегираща функция в SQL?
sobes.tech AI
Отговор от AI
Агрегиращата функция в SQL (например, SUM, AVG, COUNT) изчислява една крайна стойност за група редове и връща един ред за група. Например, SUM(salary) ще изчисли сумата на заплатите за цялата група.
Функцията за прозорец (window function) също работи с групи редове, но връща резултат за всеки ред, като взема предвид контекста на прозореца (наборът от редове около текущия). Например, SUM(salary) OVER (PARTITION BY department) ще върне сумата на заплатите по отдел за всеки ред, без да редуцира резултата до един ред.
Пример:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Тук за всеки ред ще се показва сумата на заплатите в отдела, а не един ред за отдела, както при използване на агрегираща функция с GROUP BY.