Sobes.tech
Middle

Jaka jest różnica między funkcją okienkową a funkcją agregującą w SQL?

sobes.tech AI

Odpowiedź od AI

Funkcja agregująca w SQL (np. SUM, AVG, COUNT) oblicza jedną wartość końcową dla grupy wierszy i zwraca jeden wiersz na grupę. Na przykład, SUM(salary) obliczy sumę wynagrodzeń dla całej grupy.

Funkcja okienkowa (window function) również działa na grupach wierszy, ale zwraca wynik dla każdego wiersza, uwzględniając kontekst okna (zbiór wierszy wokół bieżącego). Na przykład, SUM(salary) OVER (PARTITION BY department) zwróci sumę wynagrodzeń dla każdego działu dla każdego wiersza, nie redukując wyniku do jednego wiersza.

Przykład:

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

Tutaj dla każdego wiersza wyświetli się suma wynagrodzeń w dziale, a nie jeden wiersz na dział, jak w przypadku funkcji agregującej z GROUP BY.