Какво отличава функциите на прозореца от GROUP BY?
sobes.tech AI
Отговор от AI
Функциите за прозорец и GROUP BY в SQL служат за различни цели, въпреки че и двете работят с агрегирани данни.
GROUP BY обединява редовете по посочените колони и връща по един ред за всяка група. Могат да се прилагат агрегатни функции (SUM, COUNT и др.), но резултатът се свежда до един ред за група.
Функциите за прозорец изчисляват агрегати или други изчисления върху набор от редове, наречен прозорец, без да намаляват броя на връщаните редове. Всеки ред се запазва, но към него се добавя резултатът от функцията, изчислена върху прозореца.
Пример:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Тук за всеки ред се изчислява средната заплата по отдел, но редовете не се групират — виждаме всички служители с допълнителна колона.
За разлика от GROUP BY, функциите за прозорец позволяват анализ на данните в контекста на групата, без да се губи детайлността на отделните редове.