SQL Ready | Базы Данных
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Cотрудничество: @energy_c РКН: https://clck.ru/3QREBc
Show more📈 Analytical overview of Telegram channel SQL Ready | Базы Данных
Channel SQL Ready | Базы Данных (@sql_ready) in the Russian language segment is an active participant. Currently, the community unites 17 754 subscribers, ranking 7 324 in the Technologies & Applications category and 37 073 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 17 754 subscribers.
According to the latest data from 19 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 712 over the last 30 days and by 32 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 12.57%. Within the first 24 hours after publication, content typically collects 5.99% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 230 views. Within the first day, a publication typically gains 1 062 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 23.
- Thematic interests: Content is focused on key topics such as sql, строка, users, индекс, user_id.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc”
Thanks to the high frequency of updates (latest data received on 20 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
• Как моделировать версионные данные через valid_from / valid_to; • Как корректно закрывать предыдущую версию и создавать новую; • Как получать актуальное состояние и исторические срезы без дополнительной логики.SCD Type 2 хранит каждое изменение как отдельную версию строки с фиксированным интервалом актуальности. ➡️ SQL Ready | #гайд
Оставляю ссылочку: GitHub 📱➡️ SQL Ready | #репозиторий
LEFT JOIN используют, когда нужно сохранить строки из левой таблицы, даже если в правой нет совпадений. Но одно неверное условие в WHERE — и LEFT JOIN незаметно превращается в INNER JOIN.
Таблицы:
users(id, email)
orders(id, user_id, amount)
Нужно получить всех пользователей и их заказы (если есть):
SELECT
u.id,
u.email,
o.amount
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;
Если у пользователя нет заказов, поля из orders будут NULL — это ожидаемое поведение LEFT JOIN.
Теперь типичная ошибка:
SELECT
u.id,
u.email,
o.amount
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.amount > 100;
Условие в WHERE отфильтровывает строки, где o.amount IS NULL.
В результате пользователи без заказов исчезают, и запрос фактически работает как INNER JOIN.
Правильный вариант — переносить условия на правую таблицу в ON:
SELECT
u.id,
u.email,
o.amount
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
AND o.amount > 100;
Теперь: пользователи без заказов остаются в результате, фильтрация применяется только к связанным строкам orders.
Если же логика действительно требует убрать пользователей без заказов, тогда честнее писать INNER JOIN:
SELECT
u.id,
u.email,
o.amount
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE o.amount > 100;
Так намерение запроса читается однозначно.
🔥 Условия в WHERE применяются после JOIN и могут уничтожить строки с NULL. Условия в ON влияют только на логику связывания таблиц.
➡️ SQL Ready | #практика• Сравним бронирования одного ресурса между собой, не создавая дубликатов; • Проверим пересечение временных интервалов с помощью канонического условия; • Получим список конфликтующих бронирований, которые система должна блокировать.Это базовый инструмент контроля данных в системах бронирования, календарях, слотах доставки и любых сервисах с ограниченными ресурсами. ➡️ SQL Ready | #задача
ROW_NUMBER(), хотя Postgres умеет проще:
SELECT DISTINCT ON (user_id) *
FROM orders
ORDER BY user_id, created_at DESC;
DISTINCT ON оставляет первую строку в рамках группы, а порядок задаётся через ORDER BY:
ORDER BY user_id, created_at DESC
Так первой будет именно самая свежая запись.
Если возможны одинаковые created_at, лучше явно добавить тай-брейкер:
ORDER BY user_id, created_at DESC, id DESC
Если нужно выбрать конкретные поля и избежать SELECT *, просто укажите нужные колонки:
SELECT DISTINCT ON (user_id)
user_id, id, created_at
FROM orders
ORDER BY user_id, created_at DESC, id DESC;
Выражения из DISTINCT ON (...) обязаны быть левым префиксом ORDER BY, иначе Postgres выдаст ошибку.
🔥 Такой запрос часто читается проще, чем ROW_NUMBER(), и при подходящем индексе (user_id, created_at DESC, id DESC) может давать отличный план выполнения.
➡️ SQL Ready | #совет99% — обновляют резюме, рассылают его в 100 компаний и ждут. Они получают тишину или вежливые отказы. 1% — используют «окно возможностей». Они знают, что мало просто найти вакансии. Нужно пройти так, чтобы рекрутер не мог вас пропустить.Разница не в опыте. Разница в методе. Мы в @mathcareer — про метод. Мы не даём «советы», а разбираем систему: как читать вакансию между строк, что писать в сопроводительном письме, которое откроет двери, и как вести переговоры. Хотите перейти из 99% в 1%? 👉 Всё уже разложено по полочкам здесь: https://t.me/+v5AE1DRA7L04MGVi
Шпаргалка по оконным функциям и агрегатам для нумерации строк, поиска и анализа дубликатов, ранжирования результатов и аккуратного удаления лишних записей. Используется при очистке данных, аналитических запросах, построении рейтингов и подготовке данных к миграциям и отчётности.
➡️ SQL Ready | #шпора• О системе обработки огромного потока форм — от поиска до подачи объявлений;
• Подробно объясняется, зачем команде нужен уровень надёжности SLI 99.99%;
• Описаны оригинальные подходы к версионированию данных, изоляции изменений;
• Приводятся реальные схемы работы с SQL/NoSQL, кэшами и стратегиями graceful degradation при отказах.
🔊 Продолжайте читать на Habr!➡️ SQL Ready | #статья
COUNT(CASE WHEN ...), хотя в SQL (например, в PostgreSQL) есть более декларативный способ - FILTER.
Фильтрация применяется к агрегатной функции, а не ко всей выборке:
COUNT(*) FILTER (WHERE status = 'paid')
Строки не исключаются из FROM, а учитываются только внутри конкретного агрегата.
Можно считать несколько независимых метрик за один проход по таблице:
COUNT(*) FILTER (WHERE status = 'failed')
Оптимизатор обычно сводит такой запрос к линейному плану.
FILTER работает не только с COUNT, но и с другими агрегатами:
SUM(amount) FILTER (WHERE status = 'paid')
🔥 FILTER выразит намерение напрямую: агрегат считает только нужные строки, без лишней логики.
➡️ SQL Ready | #советLoading … ██████████████] 99%Роскомнадзору дали карт-бланш на блокировки, а «белые списки» сайтов тестируют уже в десятках регионов. И гайки будут закручиваться только сильнее. Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack. Тут профессиональный хакер делится фишками, с которыми доступ к глобальной сети у тебя будет даже в случае ядерного апокалипсиса. Не жди момента «Х». Перестрахуйся подпиской.
SELECT перед INSERT, транзакциями или триггерами. PostgreSQL умеет делать это на уровне индекса:
INSERT INTO users (email) VALUES ('a@b.com');
Сработает, если активного пользователя с таким email ещё нет:
UPDATE users SET deleted_at = now() WHERE email = 'a@b.com';
Теперь email снова можно использовать для активных, без физического удаления строк.
🔥 Partial UNIQUE index — отличный способ фиксировать правила прямо в PostgreSQL.
➡️ SQL Ready | #совет