С помощью
ROW_NUMBER, RANK, DENSE_RANK, NTILE и PERCENT_RANK можно добавлять к каждой строке информацию о её позиции, ранге или квантиле прямо в запросе. В этом гайде:
• Присвоение уникальных номеров строкам с ROW_NUMBER();
• Разбор разницы между RANK() и DENSE_RANK() при одинаковых значениях;
• Сегментация с NTILE() и относительное положение с PERCENT_RANK().
Это позволяет строить топ-N, сегментировать клиентов и анализировать данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9❤6🤝1
Forwarded from IT Ready
И как раз сегодня — этот самый день!
Кстати, 256 не с проста:
Это 2 в степени 8, то есть максимальное количество значений, которые может хранить один байт — основа работы компьютеров.
В невисокосный год праздник выпадает на 13 сентября, а в високосный — на 12-е.
Так что, поздравляю всех программистов!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍15🔥8
Распределяем события по типам — GROUP BY + агрегаты!
Когда нужно понять, какие типы событий встречаются чаще, обычный
Посчитаем количество каждого типа события:
Теперь выберем только популярные типы с более чем 100 событиями:
Можно сразу добавить среднее время отклика для каждого типа:
🔥 Важно: сначала агрегируем по типу события, потом фильтруем по количеству или другим метрикам — так легко выявлять «тяжёлые» или проблемные категории.
➡️ SQL Ready | #практика
Когда нужно понять, какие типы событий встречаются чаще, обычный
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;
🔥 Важно: сначала агрегируем по типу события, потом фильтруем по количеству или другим метрикам — так легко выявлять «тяжёлые» или проблемные категории.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥10❤6🤝1
Этот инструмент позволяет находить последовательности событий: рост цены и её падение, пропуски активности пользователей.
Что важно знать:
• PATTERN описывает последовательность (например, рост => падение)
• DEFINE задаёт правила для каждого шага;
• Можно строить аналитику для временных рядов, активности, безопасности.
MATCH_RECOGNIZE делает SQL гибким и превращает его в язык сценариев — без циклов и внешних процедур.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
Это не просто справочники - это структурированный учебник и тренажёр в одном месте. Ты найдёшь понятные теоретические объяснения и сразу приступишь к практике: каждая тема содержит примеры и задачи, которые можно решать прямо на сайте.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤9🔥5
В этой задаче соберём запрос, который определит «пробки» на дорогах: места, где машины движутся слишком медленно.
Что делаем:
• Считаем среднюю скорость по каждому участку дороги за последние 10 минут;
• Отмечаем «пробку», если средняя скорость падает ниже 15 км/ч;
• Определяем топ-участки, где движение затруднено чаще всего.
Такой анализ помогает не только в транспорте: его можно использовать и в бизнесе — для поиска «узких мест» в процессах или системах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍10❤6👎1
GENERATE_SERIES — быстро создаём последовательности чисел и дат!
В SQL часто требуется сгенерировать последовательность чисел или дат для отчётов, тестовых данных или анализа временных рядов.
Вместо ручного создания таблиц или массивов можно использовать встроенную функцию
Функция отлично работает и с датами, позволяя создавать последовательность с нужным шагом или произвольный интервал:
Можно использовать вместе с JOIN для заполнения пропусков в таблицах:
🔥 Подходит для аналитики, построения сквозных временных рядов и подготовки тестовых наборов данных без лишних ручных операций.
➡️ SQL Ready | #практика
В 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;
🔥 Подходит для аналитики, построения сквозных временных рядов и подготовки тестовых наборов данных без лишних ручных операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍9🤝4