SQL Ready | Базы Данных
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Cотрудничество: @energy_c РКН: https://clck.ru/3QREBc
Ko'proq ko'rsatish📈 Telegram kanali SQL Ready | Базы Данных analitikasi
SQL Ready | Базы Данных (@sql_ready) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 17 709 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 345-o'rinni va Rossiya mintaqasida 37 222-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 17 709 obunachiga ega bo‘ldi.
17 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 691 ga, so‘nggi 24 soatda esa 41 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 12.44% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.98% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 198 marta ko‘riladi; birinchi sutkada odatda 1 057 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 23 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent sql, строка, users, индекс, user_id kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 18 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
Оставляю ссылочку: GitHub 📱➡️ SQL Ready | #репозиторий
FETCH FIRST 5 ROWS ONLY
Обычный LIMIT / FETCH возвращает ровно N строк и может «обрезать» записи с таким же значением сортировки.
WITH TIES возвращает все строки, у которых значение ORDER BY совпадает с последней строкой результата:
FETCH FIRST 5 ROWS WITH TIES
Это удобно для построения top-N выборок, где несколько строк могут делить одно и то же место:
ORDER BY score DESC
FETCH FIRST 10 ROWS WITH TIES
WITH TIES не заменяет RANK() / DENSE_RANK(), если нужен полноценный рейтинг с номером места. Также проверьте синтаксис в вашей СУБД (например, в SQL Server используется TOP ... WITH TIES).
🔥 Такой приём позволяет строить top-выборки без дополнительных подзапросов и оконных функций.
➡️ SQL Ready | #советDNS Server помогает найти нужный IP по доменному имени, а Proxy Server может скрыть тебя от внешней сети.
На картинке — 6 типов серверов, которые стоит понимать каждому разработчику.
Сохрани, чтобы не забыть!
➡ SQL Ready | #ресурсDELETE FROM sessions WHERE expired = true;
Однако физически строки всё ещё занимают место.
Чтобы освободить пространство и обновить статистику, запускаем:
VACUUM ANALYZE sessions;Для диагностики можно получить подробный отчёт о процессе очистки:
VACUUM VERBOSE sessions;🔥 Регулярный
VACUUM поддерживает производительность и точность планов запросов.
➡️ SQL Ready | #практикаid в SQL, многие пишут IN (... , ... , ...), что увеличивает текст SQL и усложняет работу с prepared statements:
WHERE id IN (1,2,3,4,5,6,7)
PostgreSQL умеет принимать массив и сравнивать его через ANY — это короче и позволяет избежать генерации динамического SQL:
WHERE id = ANY($1)
Приложение просто передаёт массив параметром, а текст запроса остаётся неизменным независимо от длины списка:
SELECT *
FROM users
WHERE email = ANY($1);
На практике полезно явно указывать тип массива ($1::bigint[]), а также помнить, что NULL внутри массива влияет на результат сравнения.
🔥 Этот паттерн особенно удобен для batch-запросов, API-фильтров и массовых выборок, где количество значений может сильно меняться.
➡️ SQL Ready | #совет• Разбирается, почему классический RAG плохо подходит для долгоживущих AI-агентов;
• Показана архитектура когнитивной памяти на SQLite: граф узлов и рёбер, сущности, гибридный поиск и механизм разрешения конфликтов знаний;
• Объясняется, как реализовать память агента с механизмом забывания и консолидацией фактов.
🔊 Продолжайте читать на Habr!➡️ SQL Ready | #статья
customers(id, name)
orders(id, customer_id, created_at)
Нужно получить клиентов, у которых есть хотя бы один заказ.
Попытка через JOIN:
SELECT
c.id,
c.name
FROM customers c
JOIN orders o
ON o.customer_id = c.id;
Запрос вернёт клиентов, но если у клиента несколько заказов, он появится в результате несколько раз.
Чтобы убрать дубликаты, часто добавляют DISTINCT:
SELECT DISTINCT
c.id,
c.name
FROM customers c
JOIN orders o
ON o.customer_id = c.id;
Результат будет корректным, однако такой запрос выражает задачу менее точно: JOIN формирует строки для каждого совпадения, а DISTINCT затем устраняет повторяющиеся значения.
В подобных задачах фактически требуется semi join — вернуть строку из customers, если существует хотя бы одна связанная строка в orders.
В большинстве СУБД это обычно выражают через EXISTS:
SELECT
c.id,
c.name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.id
);
Подзапрос проверяет наличие хотя бы одной строки в orders, связанной с текущим клиентом.
Оптимизатор часто может завершить проверку сразу после нахождения первого совпадения, поэтому EXISTS является естественным инструментом для проверки существования строк.
Практический пример — клиенты, которые делали заказы после определённой даты:
SELECT
c.id,
c.name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.id
AND o.created_at >= '2025-01-01'
);
EXISTS не возвращает данные из подзапроса — он только проверяет факт существования строки.
Поэтому внутри обычно пишут:
SELECT 1
или:
SELECT *
В контексте EXISTS список выбираемых выражений не влияет на результат.
🔥 EXISTS — стандартный и выразительный способ реализовать semi join. Он точно отражает намерение запроса и часто позволяет оптимизатору построить более эффективный план выполнения.
➡️ SQL Ready | #практика«Мне прислали оффер!»Начали разбираться — оказывается, она пользовалась только 3 тестовыми днями. То есть за 3 дня ии-ассистент успел сделать 60 откликов. Потом она отписалась. А уже позже — из этих откликов её позвали на интервью, и одно из них привело к офферу.
«Оффер с той вакансии, куда я сама никогда бы не откликнулась.»Изначально Аня отменила подписку, так как было дорого. Ребята честно спросили у Ани, считает ли она теперь, что подписка стоит своих денег — и получили утвердительный ответ. И в очередной раз убедились: пока ты боишься, Софи делает. В этом ее сила. Совсем скоро ребята откроют набор на бесплатный тест. Места будут ограничены. Подписывайся, чтобы не пропустить ⏳
INSERT => DELETE):
DELETE FROM orders
RETURNING *
RETURNING позволяет сразу вернуть удалённые строки как результирующий набор, не выполняя повторный SELECT.
WITH moved AS (...)
CTE превращает результат удаления во временный набор данных, который можно использовать в следующей операции:
INSERT INTO orders_archive
SELECT * FROM moved;
В итоге строки удаляются и архивируются одним атомарным запросом, без повторного чтения таблицы.
🔥 Полезный паттерн для архивирования, миграций, дедупликации и batch-операций над большими таблицами.
➡️ SQL Ready | #советLEFT JOIN позволяет получить все строки из левой таблицы, даже если соответствующих записей в правой таблице нет, а FULL OUTER JOIN возвращает все строки из обеих таблиц, заполняя отсутствующие значения NULL.
На изображении показаны 4 основных типа SQL JOIN, которые чаще всего используются при объединении данных из нескольких таблиц.
📌 Сохрани, чтобы не потерять!
➡️ SQL Ready | #ресурс• Фильтруем сессии по времени и устройствам. • Считаем длительность каждой сессии. • Группируем и находим среднее время по типам устройств.Такой анализ помогает понять, в каких моментах сфокусироваться на улучшении UX и маркетинговых кампаниях. ➡️ SQL Ready | #задача
