SQL для аналитика | data.hub
← Вернуться

SQL для аналитика - от базовых запросов до оконных функций

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

Базовые запросы

Начнём с фундамента - SELECT, WHERE, ORDER BY. Это основа любого анализа данных.

SELECT и фильтрация

SELECT user_id, event_name, created_at
FROM events
WHERE created_at >= '2024-01-01'
ORDER BY created_at DESC

JOIN - соединение таблиц

JOIN - один из самых важных навыков. На собеседованиях спрашивают почти всегда.

INNER JOIN

Возвращает только строки, которые есть в обеих таблицах.

SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id

LEFT JOIN

Возвращает все строки из левой таблицы + совпадения из правой.

SELECT u.name, COUNT(o.id) as orders_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.name

Важно: LEFT JOIN нужен, когда хочешь увидеть всех пользователей, даже тех, у кого нет заказов.

Агрегатные функции

COUNT, SUM, AVG, MIN, MAX - основа аналитических отчётов.

SELECT
COUNT(*) as total_orders,
SUM(amount) as revenue,
AVG(amount) as avg_check
FROM orders
WHERE status = 'completed'

GROUP BY и HAVING

GROUP BY группирует данные, HAVING фильтрует результаты агрегации.

SELECT user_id, SUM(amount) as total
FROM orders
GROUP BY user_id
HAVING SUM(amount) > 10000

Оконные функции

Продвинутый уровень SQL. Позволяют делать расчёты по группам без потери детализации.

ROW_NUMBER

SELECT *,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY created_at
) as order_num
FROM orders

Накопительная сумма

SELECT date, revenue,
SUM(revenue) OVER (
ORDER BY date
) as cumulative_revenue
FROM daily_stats

Хочешь прокачать SQL на практике?

Попробуй наш интерактивный SQL-тренажер с реальными задачами

Открыть SQL-тренажер →

💬 Комментарии

Будьте первым, кто оставит комментарий!