SQL Ready | Базы Данных
15.4K subscribers
1.2K photos
66 videos
2 files
581 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREBc

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
🖥 Сегодня разбираем GENERATE_SERIES — календарь и диапазоны!

SQL умеет сам генерировать даты, числа и интервалы. Можно строить отчёты, искать пропуски и анализировать активность без сторонних таблиц.

В этом посте:
Генерируем последовательность дат и временных меток;

Находим “пустые” дни без заказов;

Формируем ежедневный отчёт по активности.


Функция, которая превращает SQL в крутой аналитический инструмент.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥85🤝3
Скользящее среднее: сглаживаем колебания заказов!

Оконные функции позволяют видеть тренд заказов без резких скачков.Посчитаем среднее количество заказов за последние 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 | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7🤝2
🖥 Анализ потенциальных списаний и безнадёжных долгов!

Иногда счета зависают надолго - дольше 180 дней. Такие долги уже маловероятно вернуть, и важно понимать их масштаб, чтобы вовремя принять меры.

В задаче:
Найдём счета с просрочкой свыше 180 дней;

Посчитаем их сумму и долю от всех долгов;

Определим, какая часть уже относится к «невозвратным» (closed, bankrupt).


В результате получаем инструмент для финансового контроля и резервирования: видно, где деньги уже «застыли» и какие долги требуют списания.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥9👍7
👍147🔥7👎1
Что же выведет консоль?
Anonymous Quiz
42%
A
5%
B
19%
C
34%
D
16👍8🔥7👎3
🖥 Разбираем создание и использование временных таблиц!

В этой шпаргалке — основные методы работы с временными структурами данных: создание и очистка временных таблиц, управление содержимым транзакций, использование CTE и параметров ON COMMIT. Эти приёмы применяются при оптимизации сложных запросов, промежуточных расчётах и обработке данных в сессиях или ETL-процессах.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6🤝5
Исключение строк в оконных функциях!

Иногда при расчётах нужно не учитывать текущую строку или соседние — например, чтобы не искажать среднее значение. Для этого в 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 помогает гибко управлять рамкой окна — исключая нужные строки из расчётов без изменения общей логики запроса.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍148🔥6
🖥 UPDATE с FROM и RETURNING — обновление и выборка в одном запросе!

Вместо двух операций можно сделать всё сразу: изменить данные и получить результат. Этот приём экономит запросы и делает SQL гораздо удобнее.

В сегодняшнем гайде:
Обновляем данные по связанной таблице и сразу видим результат;

Используем подзапросы и фильтры для выборочного обновления;

Узнаём, как RETURNING превращает UPDATE в инструмент аналитики;


Комбо, которое позволяет объединить обновление, логику и проверку результата в одном шаге.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥86