SQL Ready | Базы Данных
15.4K subscribers
1.2K photos
66 videos
2 files
582 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREBc

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
Рейтинг активности пользователей в SQL!

Пример практического запроса для аналитики: определяем самых активных пользователей по количеству действий.

Создаём таблицу:
CREATE TABLE actions (
user_id INT,
action_type TEXT
);


Добавляем данные:
INSERT INTO actions VALUES
(1, 'login'), (1, 'purchase'),
(2, 'login'), (2, 'comment'),
(3, 'login');


Считаем количество действий:
SELECT user_id, COUNT(*) AS total_actions
FROM actions
GROUP BY user_id
ORDER BY total_actions DESC;


Добавляем ранжирование:
SELECT
user_id,
COUNT(*) AS total_actions,
RANK() OVER (ORDER BY COUNT(*) DESC) AS rank
FROM actions
GROUP BY user_id;


🔥 Простой способ построить лидерборд или отчет по вовлеченности.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍9🤝6👎1
🖥 Обработка ошибок и исключений!

В этой шпаргалке собраны приёмы для безопасного перехвата ошибок и управления транзакциями. Корректная обработка исключений делает систему устойчивой, предотвращает сбои и сохраняет целостность данных.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥64🤝3
😁30👍10🔥6
🖥 ROWS vs RANGE, логика временной аналитики!

Многие знают оконные функции, но редко задумываются: ROWS строит окна по количеству строк, RANGE — по значению (например, времени).

Сегодня в посте:
Как работает ROWS BETWEEN … - окно по строкам.

Как использовать RANGE BETWEEN INTERVAL … - окно по времени.

Пример: получаем максимум за последний час в каждом временном срезе.


Этот подход раскрывает глубину SQL как языка временной аналитики и показывает работу с метриками.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥139👍8
👍18🔥5😁5🤝31
🖥 SQL-лотерея: угадай число!

Сегодня будем играть! База данных “задумывает” число от 1 до 10, а ты делаешь три попытки угадать его.

В задаче:
Используем RANDOM() и FLOOR() для генерации числа;

Проверяем догадки через CASE WHEN;

Добавляем счётчик успехов, чтобы узнать, повезло ли на этот раз.


Так SQL превращается в мини-игру с логикой, состоянием и элементом удачи.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥10👍9
🖥 Индексы ускоряют запросы, но жрут место!

Если таблица огромная, а фильтр почти всегда одинаковый — зачем индексировать всё подряд?

Вместо обычного индекса создаём частичный (partial index):
CREATE INDEX ON orders (user_id)
WHERE status = 'pending';


Так индекс строится только для строк, где status = 'pending'. Остальные записи не попадают, база хранит меньше, ищет быстрее.

Теперь этот запрос:
SELECT * FROM orders
WHERE status = 'pending' AND user_id = 42;


🔥 Применяйте partial index для активных заказов, незавершённых задач, непрочитанных сообщений. Там, где фильтр стабильно повторяется.

➡️ SQL Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤝8🔥71