Сегодня рассмотрим, как оконные функции могут значительно упростить сложные аналитические запросы. Эти функции делают обработку данных мощной и производительной, избегая громоздких подзапросов и группировок.
Простой пример с ROW_NUMBER()
Функция
ROW_NUMBER
позволяет нумеровать строки в пределах определённой группы. Это полезно для сортировки данных:SELECT employee_id, department_id, salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank
FROM employees;
Использование SUM() OVER для накопительных сумм
Функция
SUM
с оконной спецификацией помогает вычислять накопительные суммы, не группируя данные:SELECT order_id, order_date, amount,
SUM(amount) OVER (ORDER BY order_date) AS cumulative_total
FROM orders;
Сравнение с предыдущим значением с LAG()
Функция
LAG
позволяет взять значение из предыдущей строки. Это удобно для анализа изменений в данных:SELECT employee_id, salary,
LAG(salary, 1) OVER (ORDER BY hire_date) AS previous_salary
FROM employees;
🔥 Не забывайте о мощных инструментах SQL, таких как оконные функции! Они позволяют решать сложные задачи проще, сохраняя читаемость и производительность запросов.