Оконные функции позволяют видеть тренд заказов без резких скачков.Посчитаем среднее количество заказов за последние 3 дня.
Считаем количество заказов по датам:
SELECT order_date,
COUNT(*) AS orders
FROM orders
GROUP BY order_date;
Формируем временную таблицу для расчётов:
WITH daily AS (
SELECT order_date,
COUNT(*) AS orders
FROM orders
GROUP BY order_date
)
Вычисляем среднее за 3 дня:
SELECT order_date,
AVG(orders) OVER (
ORDER BY order_date
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) AS avg_3days
FROM daily;
Добавляем исходное значение для сравнения:
SELECT order_date,
orders,
ROUND(AVG(orders) OVER (
ORDER BY order_date
ROWS 2 PRECEDING
), 2) AS avg_3days
FROM daily;
🔥 Получаем сглаженную динамику заказов по датам — идеальный инструмент для анализа активности.
➡️ SQL Ready | #практика