Sobes.tech
Назад к вопросам
Middle+
2

Расскажи про оконные функции в SQL.

Компании, где спрашивали
X5 techX5 tech

Ответ от нейросети

sobes.tech AI

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

Основные особенности:

  • Работают по окну строк, определённому с помощью OVER().
  • Не уменьшают количество строк в результате, в отличие от GROUP BY.
  • Позволяют использовать функции ранжирования (ROW_NUMBER(), RANK()), агрегатные функции (SUM(), AVG()) и др.

Пример: получить порядковый номер сотрудника в отделе по зарплате:

SELECT
  employee_id,
  department_id,
  salary,
  ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank_in_dept
FROM employees;

Здесь PARTITION BY разбивает данные по отделам, а ORDER BY сортирует по зарплате внутри каждого отдела. Функция ROW_NUMBER() присваивает номер строки в каждой группе.

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