Sobes.tech
Назад к вопросам
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().