Sobes.tech
Middle

Какво отличава функциите на прозореца от 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, функциите за прозорец позволяват анализ на данните в контекста на групата, без да се губи детайлността на отделните редове.