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 765 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 324-o'rinni va Rossiya mintaqasida 37 073-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 17 765 obunachiga ega bo‘ldi.
19 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 712 ga, so‘nggi 24 soatda esa 32 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 12.57% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.99% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 230 marta ko‘riladi; birinchi sutkada odatda 1 062 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 20 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.
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 | #задача
