SQL умеет сам генерировать даты, числа и интервалы. Можно строить отчёты, искать пропуски и анализировать активность без сторонних таблиц.
В этом посте:
• Генерируем последовательность дат и временных меток;
• Находим “пустые” дни без заказов;
• Формируем ежедневный отчёт по активности.
Функция, которая превращает SQL в крутой аналитический инструмент.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8❤5🤝3
Скользящее среднее: сглаживаем колебания заказов!
Оконные функции позволяют видеть тренд заказов без резких скачков.Посчитаем среднее количество заказов за последние 3 дня.
Считаем количество заказов по датам:
Формируем временную таблицу для расчётов:
Вычисляем среднее за 3 дня:
Добавляем исходное значение для сравнения:
🔥 Получаем сглаженную динамику заказов по датам — идеальный инструмент для анализа активности.
➡️ SQL Ready | #практика
Оконные функции позволяют видеть тренд заказов без резких скачков.Посчитаем среднее количество заказов за последние 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;
🔥 Получаем сглаженную динамику заказов по датам — идеальный инструмент для анализа активности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥7🤝2
Иногда счета зависают надолго - дольше 180 дней. Такие долги уже маловероятно вернуть, и важно понимать их масштаб, чтобы вовремя принять меры.
В задаче:
• Найдём счета с просрочкой свыше 180 дней;
• Посчитаем их сумму и долю от всех долгов;
• Определим, какая часть уже относится к «невозвратным» (closed, bankrupt).
В результате получаем инструмент для финансового контроля и резервирования: видно, где деньги уже «застыли» и какие долги требуют списания.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥9👍7
❤16👍8🔥7👎3
В этой шпаргалке — основные методы работы с временными структурами данных: создание и очистка временных таблиц, управление содержимым транзакций, использование CTE и параметров ON COMMIT. Эти приёмы применяются при оптимизации сложных запросов, промежуточных расчётах и обработке данных в сессиях или ETL-процессах.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6🤝5
Исключение строк в оконных функциях!
Иногда при расчётах нужно не учитывать текущую строку или соседние — например, чтобы не искажать среднее значение. Для этого в SQL есть оператор
Сначала исключим текущую строку:
Исключаем все строки с одинаковым значением сортировки:
Исключаем только строки с тем же значением
🔥 Так
➡️ SQL Ready | #практика
Иногда при расчётах нужно не учитывать текущую строку или соседние — например, чтобы не искажать среднее значение. Для этого в SQL есть оператор
EXCLUDE - задаёт, какие строки исключать из окна.Сначала исключим текущую строку:
SELECT id, value,
AVG(value) OVER (
ORDER BY id
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
EXCLUDE CURRENT ROW
) AS avg_without_current
FROM data;
Исключаем все строки с одинаковым значением сортировки:
SELECT id, category, value,
SUM(value) OVER (
ORDER BY category
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
EXCLUDE GROUP
) AS sum_without_group
FROM data;
Исключаем только строки с тем же значением
ORDER BY (ties):SELECT id, score,
COUNT(*) OVER (
ORDER BY score
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
EXCLUDE TIES
) AS cnt_without_ties
FROM data;
🔥 Так
EXCLUDE помогает гибко управлять рамкой окна — исключая нужные строки из расчётов без изменения общей логики запроса.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤8🔥6
Вместо двух операций можно сделать всё сразу: изменить данные и получить результат. Этот приём экономит запросы и делает SQL гораздо удобнее.
В сегодняшнем гайде:
• Обновляем данные по связанной таблице и сразу видим результат;
• Используем подзапросы и фильтры для выборочного обновления;
• Узнаём, как RETURNING превращает UPDATE в инструмент аналитики;
Комбо, которое позволяет объединить обновление, логику и проверку результата в одном шаге.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥8❤6