TGViewer
Симулейтив Симулейтив @simulative_official · 7.46K subscribers
Post #3565 825
💻 SQL в действии: запросы, которые должен знать каждый аналитик

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

1️⃣ Анализ продаж с использованием агрегатных функций

Допустим, у нас есть таблица sales с колонками: sale_id, product_id, region, sale_date, amount. Мы хотим узнать общую сумму продаж и средний чек по регионам:

SELECT 
region,
SUM(amount) AS total_sales,
AVG(amount) AS avg_check
FROM sales
GROUP BY region
ORDER BY total_sales DESC;


Этот запрос позволяет быстро понять, какой регион приносит больше всего выручки.

2️⃣ Использование подзапросов для поиска аномалий

Предположим, мы хотим найти товары, продажи которых ниже среднего уровня по всем товарам:

SELECT product_id, SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(amount) < (
SELECT AVG(total_sales)
FROM (
SELECT SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
) AS subquery
);


Здесь мы используем подзапрос для вычисления среднего уровня продаж по всем товарам и фильтруем те товары, которые находятся ниже этого уровня.

3️⃣ Оконные функции для анализа трендов

Оконные функции позволяют анализировать данные без группировки. Например, найдем кумулятивную выручку (накопительный итог) по датам:

SELECT 
sale_date,
SUM(amount) OVER (ORDER BY sale_date) AS cumulative_sales
FROM sales;


Такой запрос поможет увидеть динамику роста выручки за определенный период.

4️⃣ Сравнение текущих и предыдущих периодов

Чтобы сравнить продажи текущего месяца с предыдущим, можно использовать оконные функции:

SELECT 
region,
DATE_TRUNC('month', sale_date) AS month,
SUM(amount) AS monthly_sales,
LAG(SUM(amount)) OVER (PARTITION BY region ORDER BY DATE_TRUNC('month', sale_date)) AS prev_month_sales,
SUM(amount) - LAG(SUM(amount)) OVER (PARTITION BY region ORDER BY DATE_TRUNC('month', sale_date)) AS sales_diff
FROM sales
GROUP BY region, DATE_TRUNC('month', sale_date)
ORDER BY region, month;


Этот запрос покажет динамику продаж по регионам с учетом разницы между месяцами.

5️⃣ Объединение таблиц для анализа

Допустим, у нас есть две таблицы: products (с информацией о товарах) и sales (с информацией о продажах). Чтобы получить список товаров с их категориями и общей суммой продаж, используем JOIN:

SELECT 
p.product_name,
p.category,
SUM(s.amount) AS total_sales
FROM products p
LEFT JOIN sales s ON p.product_id = s.product_id
GROUP BY p.product_name, p.category
ORDER BY total_sales DESC;


Такой запрос помогает объединять данные из нескольких таблиц для более глубокого анализа.

Попробуйте эти запросы на своих данных и убедитесь в их эффективности!


📈 Симулейтив | 📱 ВК | 📱 YouTube | 📱 Канал о DS
  • 👍 10
  • 🔥 4
  • ❤ 1
More from @simulative_official
  1. Sep 21, 2026💻💻💻💻💻Как устроена работа аналитика в среднем бизнесе? Хотите понять, чего ждать, если…
  2. Sep 21, 2026#проанализировали_и_поняли
  3. Sep 18, 2026💻💻💻💻💻Что меняется в работе дата-инженера, когда данных становится в тысячу раз больше…
  4. Sep 17, 2026💻 Ошибки при использовании джоинов Давайте обсудим некоторые ключевые аспекты работы с дж…
  5. Sep 16, 2026📌 Вызовы в работе аналитика данных Привет! На связи Павел Беляев — автор канала Тимлидско…
  6. Sep 14, 2026#проанализировали_и_поняли
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →