SQL Ready | Базы Данных
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it РКН: https://clck.ru/3QREBc Реклама на бирже: https://telega.in/c/sql_ready
نمایش بیشتر📈 تحلیل کانال تلگرام SQL Ready | Базы Данных
کانال SQL Ready | Базы Данных (@sql_ready) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 15 560 مشترک است و جایگاه 8 395 را در دسته فناوری و برنامهها و رتبه 43 172 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 15 560 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 10 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 57 و در ۲۴ ساعت گذشته برابر -8 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 11.95% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 6.07% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 860 بازدید دریافت میکند. در اولین روز معمولاً 945 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 25 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند sql, строка, user_id, created_at, desc تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Автор: @energy_it
РКН: https://clck.ru/3QREBc
Реклама на бирже: https://telega.in/c/sql_ready”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 11 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
WHERE created_at <= now()
AND shipped_at > now()
Такой код легко сломать и плохо масштабируется:
tstzrange(created_at, shipped_at)
PostgreSQL имеет встроенные range-типы, которые позволяют хранить и сравнивать интервалы как единое значение.
tstzrange — для timestamptz, tsrange — для timestamp:
@> now()
Оператор @> проверяет содержит ли диапазон значение, заменяя сразу два условия.
По умолчанию границы [ ) — аналог created_at <= x AND shipped_at > x:
CREATE INDEX ON orders USING GIST (tstzrange(created_at, shipped_at));
С GiST-индексом такие запросы работают эффективно даже на больших объёмах.
🔥range-типы — это способ убрать класс ошибок с датами и упростить сложную логику.
➡️ SQL Ready | #советОставляю ссылочку: GitHub 📱➡️ SQL Ready | #репозиторий
Оставляю ссылочку: GitHub 📱➡️ SQL Ready | #репозиторий
orders(id, customer_id, amount)
payments(id, order_id, status)
Задача: получить заказы с информацией об оплате.
SELECT
o.id,
o.amount,
p.status
FROM orders o
LEFT JOIN payments p
ON p.order_id = o.id;
Если у одного заказа несколько платежей — в результат попадёт несколько строк. Фактически вы получаете по одной строке на каждое совпадение orders — payments. То есть один заказ повторится столько раз, сколько у него записей в payments.
Для связи 1:N это абсолютно ожидаемо. Где начинаются проблемы — агрегация:
SELECT
COUNT(*) AS total_orders
FROM orders o
LEFT JOIN payments p
ON p.order_id = o.id;
Здесь COUNT(*) считает строки уже после JOIN, а не заказы. Если у заказа 3 платежа — он попадёт в счёт 3 раза. Это одна из самых частых причин кривых метрик.
Корректный вариант:
SELECT
COUNT(DISTINCT o.id) AS total_orders
FROM orders o
LEFT JOIN payments p
ON p.order_id = o.id;
Так считаются уникальные заказы, независимо от числа платежей. Но важно помнить, что DISTINCT — это дополнительная операция, и на больших объёмах она может стоить дорого.
И отдельный момент, если вам нужно просто количество заказов без условий по payments, JOIN здесь вообще лишний. Лучше контролировать кардинальность до JOIN
Если задача — проверить наличие успешной оплаты, проще и дешевле использовать EXISTS:
SELECT
o.id,
o.amount
FROM orders o
WHERE EXISTS (
SELECT 1
FROM payments p
WHERE p.order_id = o.id
AND p.status = 'success'
);
EXISTS работает как semi-join: он проверяет факт наличия строки, но не тянет её в результат. За счёт этого одна строка заказа остаётся одной строкой.
Если JOIN всё-таки нужен — агрегируем заранее:
SELECT
o.id,
o.amount,
COALESCE(p.has_success, 0) AS has_success
FROM orders o
LEFT JOIN (
SELECT
order_id,
MAX(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS has_success
FROM payments
GROUP BY order_id
) p ON p.order_id = o.id;
Здесь мы сначала приводим payments к одной строке на order_id, и только потом делаем JOIN. После этого результат становится понятным: одна строка на заказ, без раздувания.
Типичная ошибка:
GROUP BY o.id, o.amount, p.status
Это не решит проблему. Такой GROUP BY просто фиксирует текущую детализацию. Если у заказа было несколько статусов — строки никуда не денутся.
🔥 JOIN не создаёт дубликаты сам по себе. Он возвращает строки в соответствии с числом совпадений по условию ON. Если после JOIN строк стало больше — значит реальная связь между таблицами не 1:1, а 1:N или даже N:M.
➡️ SQL Ready | #практика• Разбирается, почему классические RAG-системы на базе векторных БД часто ограничиваются поверхностным поиском;
• Показан подход HippoRAG 2, где память и связи между фактами организованы ближе к графовой модели;
• Объясняется, как эволюционирует работа с данными;
• Рассматривается, как это влияет на SQL/NoSQL слой, архитектуру хранения и построение более осмысленных запросов к данным.
🔊 Продолжайте читать на Habr!➡️ SQL Ready | #статья
round-trip и риск рассинхронизации данных между операциями:
UPDATE orders
SET status = 'processing'
WHERE id = 123
RETURNING *;
RETURNING уже даёт доступ к изменённым строкам, но data-modifying CTE позволяет пойти дальше и использовать их в следующих шагах:
WITH updated AS (...)
CTE фиксирует результат изменения и гарантирует, что последующие операции работают с тем же набором строк в рамках одного statement:
INSERT INTO audit_log (order_id, new_status)
SELECT id, status
FROM updated;
Теперь можно атомарно обновить данные и сразу записать аудит, отправить в очередь или выполнить дополнительную логику без повторных SELECT.
🔥 data-modifying CTE — это способ строить сложные, но безопасные цепочки операций внутри одного SQL-запроса.
➡️ SQL Ready | #совет— Плюсы: кодинг, миллион токенов контекста и агентский режим — Минусы: логические ошибки, нужно присматривать в сложных задачахБольше всего зацепила именно работа агента. Решил проверить его на своей «боли» — навел порядок в подписках Telegram. В последнее время лента превратилась в бесконечный шум с постами об одном и том же. Дал задачу нейронке: просмотреть мои подписки, убрать лишнее и оставить только тех, кто пишет про реальный опыт, автоматизацию и внедрение ИИ в работу. Модель сама просканировала каналы и собрала отличную подборку. Результат получился реально адекватным, поэтому делюсь этой подборкой. Авторы, которые каждый день пишут полезные об IT и AI доступно и интересно. Подписывайтесь на лучших Tech-специалистов https://t.me/addlist/81ejyxxH4rM0ZDIy
CREATE TABLE users (
user_id INT,
email VARCHAR(100)
);
INSERT INTO users VALUES
(1, 'alice@mail.com'),
(2, 'bob@mail.com'),
(3, 'alice@mail.com'),
(4, 'carol@mail.com'),
(5, 'bob@mail.com');
Запрос для выявления дубликатов и подсчёта уникальных email:
SELECT email, COUNT(*) AS cnt,
CASE WHEN COUNT(*)>1 THEN 'Duplicate' ELSE 'Unique' END AS status
FROM users
GROUP BY email;
Функция COUNT() + GROUP BY группирует одинаковые значения, а CASE сразу классифицирует их как дубликаты или уникальные.
Результат:
email | cnt | status
-----------------------------
alice@mail.com | 2 | Duplicate
bob@mail.com | 2 | Duplicate
carol@mail.com | 1 | Unique
🔥 Это простой способ контролировать качество данных, выявлять ошибки и готовить отчёты для команды.
➡️ SQL Ready | #практикаЭта шпаргалка собрала ключевые методы, которые позволяют не просто сравнивать даты, а точно извлекать нужные части, округлять по нужному уровню, форматировать для отчётов и рассчитывать интервалы в удобной форме.
➡️ SQL Ready | #шпора• Преобразуем интервалы в точки начала и конца, чтобы работать с ними как с потоком событий; • Посчитаем текущую нагрузку через накопительную сумму по времени; • Найдём момент максимального количества одновременных событий — пик нагрузки системы.Этот приём используется в мониторинге, аналитике, планировщиках и системах, где важно контролировать параллельную активность. ➡️ SQL Ready | #задача
• Показано, как в YDB обрабатывается SQL-запрос — от парсинга до распределённого исполнения по узлам;
• Разбирается, как устроены планировщик, оптимизатор и механизмы шардинга при работе с большими данными;
• Объясняется, как достигаются консистентность, отказоустойчивость и масштабируемость в распределённой базе.
🔊 Продолжайте читать на Habr!➡️ SQL Ready | #статья
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
