Базовые запросы
Начнём с фундамента - SELECT, WHERE, ORDER BY. Это основа любого анализа данных.
SELECT и фильтрация
SELECT user_id, event_name, created_at
FROM events
WHERE created_at >= '2024-01-01'
ORDER BY created_at DESCJOIN - соединение таблиц
JOIN - один из самых важных навыков. На собеседованиях спрашивают почти всегда.
INNER JOIN
Возвращает только строки, которые есть в обеих таблицах.
SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_idLEFT 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-тренажер →
💬 Комментарии
Будьте первым, кто оставит комментарий!