Czym różnią się funkcje okienkowe od grupowania (GROUP BY)?
sobes.tech AI
Odpowiedź od AI
Funkcje okienkowe i GROUP BY w SQL służą do różnych celów, choć obie pracują na danych zagregowanych.
GROUP BY łączy wiersze według wskazanych kolumn i zwraca jeden wiersz na każdą grupę. Można stosować funkcje agregujące (SUM, COUNT itp.), ale wynik jest sprowadzany do jednego wiersza na grupę.
Funkcje okienkowe obliczają agregaty lub inne obliczenia na zestawie wierszy, zwanym oknem, nie zmniejszając liczby zwracanych wierszy. Każdy wiersz jest zachowany, ale do niego dodawany jest wynik funkcji obliczony na oknie.
Przykład:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Dla każdego wiersza obliczana jest średnia pensja w dziale, ale wiersze nie są grupowane — widzimy wszystkich pracowników z dodatkową kolumną.
W przeciwieństwie do GROUP BY, funkcje okienkowe pozwalają analizować dane w kontekście grupy, nie tracąc szczegółów poszczególnych wierszy.