SQL Ready | Базы Данных
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Cотрудничество: @energy_c РКН: https://clck.ru/3QREBc
Mostrar más📈 Análisis del canal de Telegram SQL Ready | Базы Данных
El canal SQL Ready | Базы Данных (@sql_ready) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 17 765 suscriptores, ocupando la posición 7 324 en la categoría Tecnologías y Aplicaciones y el puesto 37 073 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 17 765 suscriptores.
Según los últimos datos del 19 octubre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de 712, y en las últimas 24 horas de 32, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 12.57%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 5.99% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 2 230 visualizaciones. En el primer día suele acumular 1 062 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 23.
- Intereses temáticos: El contenido se centra en temas clave como sql, строка, users, индекс, user_id.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Cотрудничество: @energy_c
РКН: https://clck.ru/3QREBc”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 20 octubre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
INSERT/UPDATE операции:
CREATE INDEX idx_user_name ON users(name);
CREATE INDEX idx_user_email ON users(email);
CREATE INDEX idx_user_phone ON users(phone);
CREATE INDEX idx_user_city ON users(city);
При каждой вставке СУБД обновляет все 4 индекса, что сильно замедляет запись.
Функции делают индексы бесполезными:
SELECT * FROM orders WHERE YEAR(order_date) = 2024;
-- Индекс на order_date не используется
Правильно без функций:
SELECT * FROM orders WHERE order_date >= '2024-01-01' AND order_date < '2025-01-01';
Порядок столбцов критичен:
CREATE INDEX idx_user_city_age ON users(city, age);
Работает для поиска по city или city+age, но бесполезен для поиска только по age.
🔥 Поэтому используйте EXPLAIN для проверки, что индексы действительно работают!
➡️ SQL Ready | #практика• Построение календаря для поиска дней без событий. • Проверка целостности ID и нахождение «дыр». • Анализ длины пустых промежутков во временных рядах.Это помогает находить ошибки, следить за качеством данных и строить надёжную аналитику. ➡️ SQL Ready | #гайд
• Находим корзины, по которым заказ не был создан в течение 24 часов; • Считаем их стоимость; • Получаем статистику по пользователям, какой средний чек и сколько денег «ушло в никуда».В результате получаем готовый инструмент для запуска ремаркетинга, персональных скидок и писем-напоминаний. ➡️ SQL Ready | #задача
В этой шпаргалке собраны 8 методов для сбора, развертывания, подсчёта и преобразования массивов и строк. Короткие примеры помогут быстро ориентироваться в аналитических запросах и готовить данные для отчётов, API или BI-инструментов.
➡️ SQL Ready | #шпораCREATE TABLE Accounts (
id INT PRIMARY KEY,
name VARCHAR(50),
balance DECIMAL(10,2)
);
Начинаем транзакцию и блокируем строку:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; -- защита от грязных чтений
BEGIN;
SELECT balance FROM Accounts
WHERE id = 1 FOR UPDATE; -- эксклюзивная блокировка строки
Выполняем перевод и фиксируем результат:
UPDATE Accounts SET balance = balance - 500 WHERE id = 1;
UPDATE Accounts SET balance = balance + 500 WHERE id = 2;
COMMIT; -- сохраняем изменения
Откат транзакции:
ROLLBACK; -- можно вызвать до COMMIT при ошибке
🔥 FOR UPDATE ставит row-level exclusive lock: другие транзакции ждут, пока вы завершите свою.
➡️ SQL Ready | #практика• Считаем общий running total по датам. • Считаем накопительные суммы отдельно для каждого пользователя. • Контролируем диапазон расчёта с ROWS BETWEEN.Это делает SQL-запросы компактными, наглядными и готовыми к использованию в отчётах. ➡️ SQL Ready | #гайд
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 | #практика• EXTRACT(DOW FROM play_time) — выделяем день недели прослушивания. • EXTRACT(HOUR FROM play_time) — смотрим, в какие часы включают музыку. • COUNT(*) + GROUP BY — считаем, сколько треков играло по жанрам и времени. • ORDER BY — сортируем, чтобы увидеть пики популярности.В итоге получаем SQL-инструмент для поиска «вирусных» жанров и артистов. ➡️ SQL Ready | #задача
WHERE не работает. HAVING позволяет фильтровать уже агрегированные результаты.
Посчитаем количество заказов на каждого клиента:
SELECT CustomerID, COUNT(*) AS OrdersCount
FROM Orders
GROUP BY CustomerID;
Теперь выберем только тех клиентов, у кого больше 5 заказов:
SELECT CustomerID, COUNT(*) AS OrdersCount
FROM Orders
GROUP BY CustomerID
HAVING COUNT(*) > 5;
Можно комбинировать разные агрегаты, например сумма и среднее:
SELECT CustomerID, SUM(TotalAmount) AS Total, AVG(TotalAmount) AS AvgOrder
FROM Orders
GROUP BY CustomerID
HAVING SUM(TotalAmount) > 1000;
🔥 Но помните: фильтр с HAVING применяется после агрегации — сначала агрегируем, потом фильтруем.
➡️ SQL Ready | #практика• JOIN — объединяем фильмы, жанры и оценки в единую выборку. • AVG + COUNT — считаем средний рейтинг и количество отзывов. • RANK + PARTITION BY — ранжируем фильмы внутри каждого жанра.В итоге получаем топ фильмов по каждому жанру с учётом рейтинга и популярности. ➡️ SQL Ready | #задача
