Middle
143
questionbank
Для чего используются оконные функции в SQL?
Ответ от нейросети
sobes.tech AI
Оконные функции в SQL выполняют агрегацию данных в наборе строк, связанных текущей строкой, но при этом не группируют результирующий набор данных. Это позволяет выполнять вычисления, такие как кумулятивные суммы, скользящие средние или ранжирование, сохраняя при этом все строки исходного запроса.
Основные цели использования оконных функций:
- Ранжирование: Присвоение ранга каждой строке в определенном окне.
-- Получаем ранг сотрудников по зарплате внутри каждого отдела SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Вычисление статистик по группе строк без группировки: Агрегирование данных в пределах "окна" строк, сохраняя детализацию на уровне строк.
-- Вычисляем среднюю зарплату по всему отделу для каждой строки SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Сравнение текущей строки с другими строками в окне: Доступ к данным из предыдущих или последующих строк в окне.
-- Получаем зарплату предыдущего сотрудника в отделе по убыванию зарплаты SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Расчеты с накопительным итогом: Вычисление сумм, средних и других агрегаций по нарастающему итогу.
-- Вычисляем кумулятивную сумму продаж по дате SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
В отличие от обычных функций агрегации (GROUP BY), оконные функции не схлопывают строки, что делает их мощным инструментом для аналитических запросов и детального анализа данных.