🖥 Оконные функции в SQL: секреты эффективного использования



Сегодня рассмотрим, как оконные функции могут значительно упростить сложные аналитические запросы. Эти функции делают обработку данных мощной и производительной, избегая громоздких подзапросов и группировок.



Простой пример с 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, таких как оконные функции! Они позволяют решать сложные задачи проще, сохраняя читаемость и производительность запросов.



SQL Ready | #практика