Sobes.tech
Back to questions
Junior — Middle
63

Какое назначение у оконных функций в SQL и чем они отличаются от обычных агрегатных функций?

Companies where asked
Почтатех

Answer from AI

sobes.tech AI

Оконные функции (window functions) в SQL позволяют выполнять агрегатные или аналитические вычисления по набору строк, связанных с текущей строкой, без группировки результата в одну строку, как это происходит с обычными агрегатными функциями.

Основные отличия оконных функций от агрегатных:

  • Оконные функции вычисляются по «окну» строк, определённому с помощью конструкции OVER(), и возвращают значение для каждой строки исходного набора данных.
  • Агрегатные функции (например, SUM(), COUNT()) обычно группируют строки и возвращают одно значение на группу, уменьшая количество строк в результате.

Пример использования оконной функции:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_department_salary
FROM employees;

Здесь для каждой строки вычисляется средняя зарплата по отделу, не объединяя строки в группы, что позволяет видеть и индивидуальную зарплату, и среднюю по отделу одновременно.

Таким образом, оконные функции расширяют возможности анализа данных, сохраняя детализацию строк.