💡 SQL — это не только инструмент для создания и управления базами данных. Его мощь часто недооценивается в контексте Data Science. Давайте рассмотрим, как SQL может помочь на каждом этапе работы с данными и почему стоит изучить его глубже.
🔍 1. Предварительная обработка данных (Data Preprocessing)
Обычно данные находятся в сыром виде и требуют значительной очистки и приведения в нужный формат. SQL позволяет быстро выполнять объединения, группировки, фильтрацию и агрегацию данных без необходимости выгружать большие наборы данных в Python или R.
Пример:
-- Выбираем транзакции с суммой выше среднего и сгруппированные по пользователям
SELECT user_id, AVG(transaction_amount) AS avg_amount
FROM transactions
GROUP BY user_id
HAVING AVG(transaction_amount) > (
SELECT AVG(transaction_amount) FROM transactions
);
Это простой запрос, но он помогает сразу увидеть клиентов, у которых уровень трат выше среднего.
🖥 2. Feature Engineering с SQL
Формирование признаков — ключевой этап для создания моделей. Используя SQL, можно легко создавать категориальные признаки, вычислять периоды между событиями и генерировать агрегированные значения.
Например, создание признака активности пользователя:
-- Количество покупок за последние 30 дней
SELECT user_id, COUNT(*) AS purchases_last_30_days
FROM purchases
WHERE purchase_date >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
GROUP BY user_id;
Такой запрос может быть полезен для прогнозирования оттока клиентов.
📈 3. Анализ временных рядов
Работа с временными рядами — это отдельная задача. SQL поддерживает такие функции, как скользящие средние и кумулятивные суммы.
-- Построение 7-дневного скользящего среднего по продажам
SELECT
sales_date,
sales_amount,
AVG(sales_amount) OVER (ORDER BY sales_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg_7_days
FROM sales_data;
Используя такие функции, можно получать первичный анализ временных рядов прямо из базы данных, без перехода к pandas или другим библиотекам.
📊 4. Построение аналитических отчетов
SQL — отличный инструмент для создания дашбордов и отчетов. Используя CTE (Common Table Expressions), подзапросы и оконные функции, можно строить сложные отчеты, которые сразу дадут глубокое понимание данных.
WITH monthly_sales AS (
SELECT
EXTRACT(MONTH FROM sales_date) AS month,
SUM(sales_amount) AS total_sales
FROM sales_data
GROUP BY EXTRACT(MONTH FROM sales_date)
)
SELECT
month,
total_sales,
LAG(total_sales) OVER (ORDER BY month) AS previous_month_sales,
total_sales - LAG(total_sales) OVER (ORDER BY month) AS growth
FROM monthly_sales;
Этот запрос позволит сразу увидеть динамику продаж по месяцам и рост относительно предыдущего периода
@sqlhub