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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
🖥 Псевдоколонки — аналитика «рядом с рядком»

С помощью ROW_NUMBER, RANK, DENSE_RANK, NTILE и PERCENT_RANK можно добавлять к каждой строке информацию о её позиции, ранге или квантиле прямо в запросе.

В этом гайде:
Присвоение уникальных номеров строкам с ROW_NUMBER();

Разбор разницы между RANK() и DENSE_RANK() при одинаковых значениях;

Сегментация с NTILE() и относительное положение с PERCENT_RANK().


Это позволяет строить топ-N, сегментировать клиентов и анализировать данные.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍96🤝1
Forwarded from IT Ready
☕️ Чуть не забыл, знали, что каждый 256-й день в году отмечается День программиста?

И как раз сегодня — этот самый день!

Кстати, 256 не с проста:
Это 2 в степени 8, то есть максимальное количество значений, которые может хранить один байт — основа работы компьютеров.

В невисокосный год праздник выпадает на 13 сентября, а в високосный — на 12-е.


Так что, поздравляю всех программистов! ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍15🔥8
Распределяем события по типам — GROUP BY + агрегаты!

Когда нужно понять, какие типы событий встречаются чаще, обычный WHERE не помогает — нужна агрегация.

Посчитаем количество каждого типа события:
SELECT EventType, COUNT(*) AS EventCount
FROM Logs
GROUP BY EventType;


Теперь выберем только популярные типы с более чем 100 событиями:
SELECT EventType, COUNT(*) AS EventCount
FROM Logs
GROUP BY EventType
HAVING COUNT(*) > 100;


Можно сразу добавить среднее время отклика для каждого типа:
SELECT EventType,
COUNT(*) AS EventCount,
AVG(ResponseTime) AS AvgResponse
FROM Logs
GROUP BY EventType
HAVING COUNT(*) > 100;


🔥 Важно: сначала агрегируем по типу события, потом фильтруем по количеству или другим метрикам — так легко выявлять «тяжёлые» или проблемные категории.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥106🤝1
🖥 Разбираемся с MATCH_RECOGNIZE — поиском паттернов прямо!

Этот инструмент позволяет находить последовательности событий: рост цены и её падение, пропуски активности пользователей.

Что важно знать:
PATTERN описывает последовательность (например, рост => падение)

DEFINE задаёт правила для каждого шага;

Можно строить аналитику для временных рядов, активности, безопасности.


MATCH_RECOGNIZE делает SQL гибким и превращает его в язык сценариев — без циклов и внешних процедур.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥9👍8🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Code — кладезь знаний по SQL на русском!

Это не просто справочники - это структурированный учебник и тренажёр в одном месте. Ты найдёшь понятные теоретические объяснения и сразу приступишь к практике: каждая тема содержит примеры и задачи, которые можно решать прямо на сайте.

📌 Оставляю ссылочку: code.mu

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍179🔥5
🖥 Находим пробки в городе с помощью!

В этой задаче соберём запрос, который определит «пробки» на дорогах: места, где машины движутся слишком медленно.

Что делаем:
Считаем среднюю скорость по каждому участку дороги за последние 10 минут;

Отмечаем «пробку», если средняя скорость падает ниже 15 км/ч;

Определяем топ-участки, где движение затруднено чаще всего.


Такой анализ помогает не только в транспорте: его можно использовать и в бизнесе — для поиска «узких мест» в процессах или системах.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍106👎1
GENERATE_SERIES — быстро создаём последовательности чисел и дат!

В SQL часто требуется сгенерировать последовательность чисел или дат для отчётов, тестовых данных или анализа временных рядов.

Вместо ручного создания таблиц или массивов можно использовать встроенную функцию GENERATE_SERIES:
SELECT * 
FROM generate_series(1, 10) AS number;


Функция отлично работает и с датами, позволяя создавать последовательность с нужным шагом или произвольный интервал:
SELECT * 
FROM generate_series('2025-01-01'::date, '2025-01-07'::date, '1 day') AS day;


Можно использовать вместе с JOIN для заполнения пропусков в таблицах:
SELECT d.day, COALESCE(o.total, 0) AS total_orders
FROM generate_series('2025-01-01'::date, '2025-01-07'::date, '1 day') AS d(day)
LEFT JOIN orders o ON o.order_date = d.day;


🔥 Подходит для аналитики, построения сквозных временных рядов и подготовки тестовых наборов данных без лишних ручных операций.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9🤝4