Назад к вопросам
Middle
7
Что такое оконные функции? Какие использовал? Чем отличаются от GROUP BY?
Компании, где спрашивали
AltDev
Ответ от нейросети
sobes.tech AI
Оконные функции (window functions) в SQL позволяют выполнять вычисления по набору строк, связанных с текущей строкой, без группировки данных в одну строку, как это делает GROUP BY. Они работают поверх набора строк, сохраняя при этом исходное количество строк в результате.
Пример оконной функции — ROW_NUMBER(), RANK(), LAG(), LEAD(), SUM() OVER(), AVG() OVER() и т.д.
Отличия от GROUP BY:
- GROUP BY агрегирует строки, сводя несколько строк в одну, а оконные функции возвращают результат для каждой строки, учитывая контекст окна.
- Оконные функции используют предложение OVER(), где можно определить окно (partition by, order by), по которому происходит вычисление.
Пример:
SELECT employee_id, department_id, salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Здесь для каждой строки вычисляется средняя зарплата по отделу, но строки не агрегируются.
Использовал функции: ROW_NUMBER(), RANK(), LAG(), LEAD(), SUM() OVER(), AVG() OVER().