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
🖥 Анализ потенциальных списаний и безнадёжных долгов!

Иногда счета зависают надолго - дольше 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
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Neon — интерактивный учебник по базам данных!

Хочешь научиться работать с базами данных - от простых запросов до глубоких фич PostgreSQL? На Neon ты найдёшь полное руководство: как начать, как писать запросы, работать с транзакциями и продвинутыми темами вроде CTE, индексов и триггеров.

📌 Оставляю ссылочку: neon.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6🤝6
🖥 Знаете, как посчитать средний интервал между событиями в SQL?

Если нужно посчитать время между событиями (например, между заказами, логинами или платежами). Есть простой и эффективный способ — функция LAG().

Сначала берём дату текущего и предыдущего события для каждого пользователя:
LAG(order_date) OVER (PARTITION BY user_id ORDER BY order_date)


Считаем разницу между ними:
order_date - LAG(order_date) OVER (PARTITION BY user_id ORDER BY order_date)


Чтобы получить средний промежуток:
SELECT user_id,
AVG(order_date - LAG(order_date) OVER (PARTITION BY user_id ORDER BY order_date)) AS avg_gap
FROM orders;


🔥 Так вы узнаете, среднюю частоту заказов по каждому пользователю, без подзапросов, без циклов.

➡️ SQL Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍157🔥6🤝1
25😁10👍5🤝1
🖥 SQL-анализ «домашних» локаций пользователей!

У каждого пользователя есть десятки отметок с координатами — по ним можно определить, где он бывает чаще всего.

В этой задаче:
Округлим координаты, чтобы объединить близкие точки;

Посчитаем частоту появлений по каждой зоне;

Найдём точку с максимальным количеством визитов — «дом».


В результате получаем инструмент геоаналитики, который помогает определять зоны активности и строить персональные рекомендации.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍137🤝6🔥2😁2