Когда я решила стать аналитиком, я не знала про SQL вообще ничего, совсем, образование у меня экономическое и в университете SQL нам никто не преподавал.

В моем представлении было, что аналитика – это красивые графики в Excel, умные выводы и встречи с руководством, а то, что за всем этим стоят запросы к базам данных – как-то ускользало от внимания, до тех пор пока я не начала искать работу.

Первая же вакансия, которая мне понравилась, была в ритейле и была связана с аналитиой ассортимента, требования: SQL, SQL и еще раз SQL и тут пришлось учиться.
Но знаете что? SQL оказался не страшным, а невероятно логичным и красивым инструментом, особенно когда задачи реальные, из жизни большой компании.

В этой статье приведу пример 5 задач, которые меня научили SQL по-настоящему, все они построены на том, с чем работает аналитик ассортимента: товары, категории, продажи и поставки.

Задачи:

  1. ABC-анализ товарного ассортимента – ранжирование товаров по вкладу в общую выручку.

  2. Анализ воронки продаж по категориям – доля каждой категории с накоплением.

  3. Динамика продаж год к году – сравнение с прошлым периодом.

  4. Анализ покупательской корзины – товары, которые часто берут вместе.

  5. RFM-сегментация покупателей – кто приносит деньги, а кто уйдет.

Спойлер: запросы не самые базовые, все запросы используют оконные функции, подзапросы и CTE.

Исходные данные

Для примеров я использую структуру, приближенную к реальному ритейлу:

sales – продажи (date, product_id, store_id, quantity, amount)
products – товары (product_id, product_name, category, price, cost)
transactions – чеки (transaction_id, date, customer_id, product_id, quantity)
customers – покупатели (customer_id, card_number, first_purchase_date)

Задача 1. ABC-анализ товарного ассортимента

Категорийному менеджеру нужно понять, какие товары приносят основную выручку, а какие самые не выгодные, тут нужно понимать, что ABC-анализ делит товары на три группы:
A — 80% выручки (золотой фонд)
B — 15% выручки (средний класс)
C — 5% выручки (по нашему ТЗ это первые кандидаты на вывод) 

Решение:

WITH product_revenue AS (
  
-- Считаем выручку по каждому товару
    SELECT 
        p.product_id,
        p.product_name,
        p.category,
        SUM(s.amount) AS revenue,
        SUM(SUM(s.amount)) OVER() AS total_revenue
    FROM sales s
    JOIN products p ON s.product_id = p.product_id
    WHERE s.date BETWEEN '2026-01-01' AND '2026-03-31'
    GROUP BY p.product_id, p.product_name, p.category
),
product_share AS (
  
-- Считаем долю каждого товара и накопленную долю
    SELECT 
        product_id,
        product_name,
        category,
        revenue,
        ROUND(100 * revenue / total_revenue, 2) AS share_percent,
        ROUND(100 * SUM(revenue) OVER(ORDER BY revenue DESC) / total_revenue, 2) AS cumulative_share,
        ROW_NUMBER() OVER(ORDER BY revenue DESC) AS rank
    FROM product_revenue
)

SELECT 
    product_id,
    product_name,
    category,
    revenue,
    share_percent,
    cumulative_share,
    CASE 
        WHEN cumulative_share <= 80 THEN 'A'
        WHEN cumulative_share <= 95 THEN 'B'
        ELSE 'C'
    END AS abc_class
FROM product_share
ORDER BY revenue DESC;

Что мы здесь используем:

Оконные функции с агрегацией – SUM(SUM(amount)) OVER() позволяет посчитать общую выручку и одновременно сохранить детализацию по товарам.

Накопительная сумма – SUM(revenue) OVER(ORDER BY revenue DESC) считает кумулятивную долю, что критически важно для ABC-анализа.

Условия CASE WHEN - для разметки данных, в нашем случае для присвоения группы.

Задача 2. Анализ воронки продаж по категориям с накоплением

Руководство хочет видеть не просто сколько продала каждая категория, а как распределяются продажи внутри категорий – какие подкатегории растят выручку, а какие отстают.

Решение:

WITH category_stats AS (
    SELECT 
        p.category,
        p.product_name,
        SUM(s.amount) AS product_revenue,
        SUM(SUM(s.amount)) OVER(PARTITION BY p.category) AS category_revenue,
        SUM(SUM(s.amount)) OVER() AS total_revenue
    FROM sales s
    JOIN products p ON s.product_id = p.product_id
    WHERE s.date BETWEEN '2026-01-01' AND '2026-03-31'
    GROUP BY p.category, p.product_name
),
category_ranking AS (
    SELECT 
        category,
        product_name,
        product_revenue,
        category_revenue,
        ROUND(100 * product_revenue / category_revenue, 2) AS share_in_category,
        ROUND(100 * category_revenue / total_revenue, 2) AS category_share_of_total,
        RANK() OVER(PARTITION BY category ORDER BY product_revenue DESC) AS rank_in_category
    FROM category_stats
)
SELECT 
    category,
    product_name,
    product_revenue,
    share_in_category,
    category_share_of_total,
    rank_in_category
FROM category_ranking
WHERE rank_in_category <= 3  -- топ-3 товара в каждой категории
ORDER BY category, rank_in_category;

Что мы здесь используем:

Многоуровневая агрегация – сначала считаем выручку по товарам, потом по категориям (через PARTITION BY), потом общую, удобно что все в одном запросе.

Ранжирование внутри групп – RANK() OVER(PARTITION BY category) показывает лидеров внутри каждой категории отдельно.

Задача 3. Динамика продаж год к году с скользящим средним

Аналитику нужно понять сезонность и тренды: как продажи текущего месяца соотносятся с прошлым годом, и есть ли устойчивый рост.

Решение:

WITH monthly_sales AS (
  
    -- Помесячная выручка
    SELECT 
        DATE_TRUNC('month', s.date) AS month,
        SUM(s.amount) AS revenue,
        EXTRACT(YEAR FROM DATE_TRUNC('month', s.date)) AS year,
        EXTRACT(MONTH FROM DATE_TRUNC('month', s.date)) AS month_num
    FROM sales s
    WHERE s.date >= '2024-01-01'
    GROUP BY DATE_TRUNC('month', s.date)
),
sales_with_lag AS (
    SELECT 
        month,
        revenue,
        year,
        month_num,
        -- Выручка за тот же месяц прошлого года
        LAG(revenue, 12) OVER(ORDER BY month) AS revenue_same_month_last_year,
        -- Скользящее среднее за 3 месяца
        AVG(revenue) OVER(ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg_3m,
        -- Скользящее среднее за 12 месяцев (годовой тренд)
        AVG(revenue) OVER(ORDER BY month ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS moving_avg_12m
    FROM monthly_sales
)
SELECT 
    month,
    revenue,
    revenue_same_month_last_year,
    ROUND(100 * (revenue - revenue_same_month_last_year) / revenue_same_month_last_year, 2) AS yoy_growth_percent,
    ROUND(moving_avg_3m, 2) AS moving_avg_3m,
    ROUND(moving_avg_12m, 2) AS moving_avg_12m,
    -- Сравнение с трендом
    CASE 
        WHEN revenue > moving_avg_12m * 1.1 THEN 'Выше тренда'
        WHEN revenue < moving_avg_12m * 0.9 THEN 'Ниже тренда'
        ELSE 'В рамках тренда'
    END AS trend_deviation
FROM sales_with_lag
WHERE year = 2026
ORDER BY month;

Что мы здесь используем:

LAG с большим смещением – LAG(revenue, 12) достает значение 12 строк назад (ровно год) для сравнения год к году.

Скользящее среднее – ROWS BETWEEN 2 PRECEDING AND CURRENT ROW задает рамку окна для расчета, это сглаживает случайные скачки и показывает реальный тренд.

Задача 4. Анализ покупательской корзины (часто вместе)

Ритейлу важно понимать, какие товары люди кладут в корзину одновременно. это нужно для: планирования выкладки (рядом ставят то, что часто берут вместе), для формирования акций (купи сыр — получи колбасу со скидкой) и для рекомендаций в мобильном приложении.

Решение:

WITH basket_items AS (
  
    -- Каждый товар в каждом чеке
    SELECT 
        t.transaction_id,
        t.customer_id,
        t.product_id,
        p.category
    FROM transactions t
    JOIN products p ON t.product_id = p.product_id
    WHERE t.date BETWEEN '2026-01-01' AND '2026-03-31'
),
product_pairs AS (
  
    -- Связываем товары внутри одного чека
    SELECT 
        b1.category AS category_a,
        b1.product_id AS product_a,
        b2.category AS category_b,
        b2.product_id AS product_b,
        COUNT(*) AS times_together
    FROM basket_items b1
    JOIN basket_items b2 ON b1.transaction_id = b2.transaction_id
        AND b1.product_id < b2.product_id  -- исключаем дубли и самосоединения
    GROUP BY b1.category, b1.product_id, b2.category, b2.product_id
),
ranked_pairs AS (
    SELECT 
        category_a,
        category_b,
        product_a,
        product_b,
        times_together,
        -- Ранжируем пары внутри каждой комбинации категорий
        ROW_NUMBER() OVER(PARTITION BY category_a, category_b ORDER BY times_together DESC) AS rank_in_category_pair,
        -- Доля от максимальной популярности
        ROUND(100 * times_together / MAX(times_together) OVER(PARTITION BY category_a, category_b), 2) AS percent_of_top_pair
    FROM product_pairs
    WHERE category_a <= category_b  -- упорядочиваем категории
)

SELECT 
    category_a,
    category_b,
    product_a,
    product_b,
    times_together,
    percent_of_top_pair
FROM ranked_pairs
WHERE rank_in_category_pair <= 5  -- топ-5 пар в каждой связке категорий
    AND times_together > 10  -- фильтруем шум
ORDER BY category_a, category_b, rank_in_category_pair;

Что мы здесь используем:

Self-join с условием – соединение таблицы с самой собой, чтобы найти пары товаров в одном чеке. Условие b1.product_id < b2.product_id убирает дубли (молоко+хлеб и хлеб+молоко считаются один раз) .

Двойное ранжирование – сначала считаем популярность пар, потом ранжируем внутри каждой группы категорий, это позволяет увидеть топовые сочетания в разрезе Молочка + Бакалея, Мясо + Овощи и т.д.

Задача 5. RFM-сегментация покупателей

Бизнес-контекст

RFM (Recency, Frequency, Monetary) – стандартный способ сегментировать покупателей, чтобы понять: кто приносит деньги и их надо холить, кто спит и их надо будить и кто ушел и его уже не вернуть.

Решение:

WITH customer_metrics AS (
  
    -- Считаем RFM-метрики по каждому покупателю
    SELECT 
        c.customer_id,
        -- Recency: дней с последней покупки (чем меньше, тем лучше)
        EXTRACT(DAY FROM AGE(CURRENT_DATE, MAX(t.date))) AS recency,
        -- Frequency: количество покупок
        COUNT(DISTINCT t.transaction_id) AS frequency,
        -- Monetary: общая сумма
        SUM(t.quantity * p.price) AS monetary,
        -- Средний чек
        AVG(t.quantity * p.price) AS avg_check
    FROM customers c
    LEFT JOIN transactions t ON c.customer_id = t.customer_id
    LEFT JOIN products p ON t.product_id = p.product_id
    WHERE t.date >= '2025-01-01'  -- последний год
    GROUP BY c.customer_id
    HAVING COUNT(DISTINCT t.transaction_id) > 0  -- только покупавшие
),
rfm_scores AS (
    SELECT 
        customer_id,
        recency,
        frequency,
        monetary,
        avg_check,
        -- NTILE(5) делит на 5 равных групп
        -- Recency: чем меньше дней, тем выше балл (инвертируем)
        NTILE(5) OVER(ORDER BY recency DESC) AS r_score,  -- тут хитро: DESC, потому что меньший recency = лучше
        NTILE(5) OVER(ORDER BY frequency DESC) AS f_score,
        NTILE(5) OVER(ORDER BY monetary DESC) AS m_score
    FROM customer_metrics
),
rfm_segments AS (
  
    SELECT 
        customer_id,
        recency,
        frequency,
        monetary,
        avg_check,
        r_score,
        f_score,
        m_score,
        CASE 
            WHEN r_score >= 4 AND f_score >= 4 AND m_score >= 4 THEN 'Чемпионы'
            WHEN r_score >= 3 AND f_score >= 3 AND m_score >= 3 THEN 'Лояльные'
            WHEN r_score >= 4 AND f_score <= 2 THEN 'Новые'  -- недавно, но мало
            WHEN r_score <= 2 AND f_score >= 4 AND m_score >= 4 THEN 'На грани'  -- давно не были, но раньше много
            WHEN r_score <= 2 AND f_score <= 2 AND m_score <= 2 THEN 'Умершие'
            ELSE 'Спящие'
        END AS segment,
        -- Для каждого клиента находим его любимый товар
        FIRST_VALUE(p.product_name) OVER(PARTITION BY c.customer_id 
            ORDER BY t.quantity DESC) AS favorite_product
    FROM customer_metrics c
    LEFT JOIN transactions t ON c.customer_id = t.customer_id
    LEFT JOIN products p ON t.product_id = p.product_id
)

SELECT 
    segment,
    COUNT(*) AS customers_count,
    ROUND(100 * COUNT(*) / SUM(COUNT(*)) OVER(), 2) AS segment_share,
    ROUND(AVG(recency), 1) AS avg_recency_days,
    ROUND(AVG(frequency), 1) AS avg_frequency,
    ROUND(AVG(monetary), 2) AS avg_monetary,
    ROUND(AVG(avg_check), 2) AS avg_avg_check,
    -- Пример списка любимых товаров сегмента (для презентаций)
    STRING_AGG(DISTINCT favorite_product, ', ' ORDER BY favorite_product LIMIT 5) AS top_favorite_products
FROM rfm_segments
GROUP BY segment
ORDER BY avg_monetary DESC;

Что мы здесь используем:

NTILE(5) – магическая функция, которая делит покупателей на 5 равных групп по любому показателю, это основа RFM: первые 20% по частоте получают балл 5, последние 20% балл 1.

FIRST_VALUE OVER(PARTITION BY) – находит любимый товар каждого клиента (тот, который он покупал чаще всего), нужно для персонализации.

Многоступенчатая логика — сегментация строится на комбинации трех баллов. Здесь: Чемпионы – это те, у кого все тройки высокие, На грани – раньше были чемпионами, но давно не заходили.

Что мне помогло понять и начать использовать SQL по-настоящему

  1. Понимание бизнес-смысла – когда знаешь, что твой запрос решит, ставить ли майонез рядом с пельменями, учишься быстрее.

  2. Оконные функции – это суперсила – они позволяют делать в одном запросе то, на что раньше уходили десятки строк кода и Excel-таблицы, к ним нужно просто привыкнуть, это придет с опытом использования.

  3. Постепенное усложнение задач – сначала простые SUM OVER, потом PARTITION BY, потом ROWS BETWEEN, потом комбинации с подзапросами.

  4. Ручная проверка – берем маленький кусочек данных и считаем на нем (например по одному товару/дню), чтобы убедиться, что оконные функции считают правильно, а затем уже мастабируем на все данные.

⁉️А какие задачи встречались вам на тестовых? Делитесь в комментариях

✔️Больше про будни и задачи аналитика данных в моем тг ?Таня и Данные?

Комментарии (22)


  1. Feer41rus
    01.03.2026 19:41

    Хотелось бы увидеть обезличенные итоги данных, как итоговые данные выглядят, что не было в статье)


    1. TanyaVSdannye Автор
      01.03.2026 19:41

      Спасибо за идею, в следующих разборах добавлю примеры данных, не только код


      1. Akina
        01.03.2026 19:41

        Полностью согласен с предыдущим оратором. Приблизительное описание структуры таблиц - это ниачём. Лучше пусть и модельно-упрощённые, но честные CREATE TABLE, не допускающие двусмысленности. И тестовые данные, пусть обезличенные и совсем чуть, тоже нужны - в принципе по поставленным задачам для демонстрации достаточно 3 покупателя, 3 товара, по 3 покупки на нос, ну ладно - два магазина, всё вместе 4 INSERT INTO, два-три десятка строк суммарно, спокойно прячется под спойлер. И пояснять можно будет не плавающими в воздухе комментариями, а прямо на основании тест-данных.

        в следующих разборах

        Подумайте, может, есть смысл хотя бы для одного запроса в (следующей) статье показать цепочку размышлений, которые привели к итоговому запросу?


        1. TanyaVSdannye Автор
          01.03.2026 19:41

          Спасибо за развернутую ОС, учту при написании следующих статей


          1. Akina
            01.03.2026 19:41

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


  1. Kwisatz
    01.03.2026 19:41

    Категорийному менеджеру нужно понять, какие товары приносят основную выручку, а какие самые не выгодные

    А зачем, не подскажите? А то, знаете, такое дело, я вот уже в бесчисленное количество магазинов перестал ходить, где явно есть такие менеджеры. Судя по тексту (кадидаты на вывод) это чтобы вводить их из ассортимента? А я вот буду ходить в магазин с широким ассортиментом.

    Дальше статью не читал, извините, потому что, если аналитику это не известно, то скорее всего он профнепригоден. Потому что следующая часть задачи должна была быть - поведенческий анализ покупателей, покупавших товар, который вывели, после того как его не стало.


    1. TanyaVSdannye Автор
      01.03.2026 19:41

      в нашем случае это делалось для того, чтобы понимать каким товарам отдавать больше торгового пространства, а каким меньше. Конечно, полностью, например, хлеб из магазина не убрать(нужно закрывать все базовые запросы покупателя), но можно сократить ассортимент и занять освободившееся торговое пространство более эффективно.
      Уточню, что здесь речь идет о маленьких магазинах формата "у дома", где площадь ограничена.


      1. Kwisatz
        01.03.2026 19:41

        Рядом с моим домом есть маленький ярче, я туда ходил каждый день, сначала пропала 1 товарная позиция (мама лама), стал заходить реже, потом 2 (ред булл) - еще реже, 3 (кола без сахара) - совсем редко, ну а затем 4.5 (куриная грудка, сосиски колобас балабас) и так далее. Теперь я туда не хожу, максимум 1-2 раза в месяц, а иду вдвое дальше до другого магазина. Вопрос, сколько таких как я, сколько магазин потерял выгнав меня. Судя по вашему тексту, у вас нет ответов на эти вопросы, но вы уверенно заявляете, что " можно сократить ассортимент и занять освободившееся торговое пространство более эффективно". На основании чего вы делаете такие заявления?

        PS пожалуйста, если желаете поспорить, опирайтесь на данные, вы же позиционируете себя как аналитик.
        PSPS Хотя с другой стороны, чем менее компетентны вы будете, тем больше могу просить денег я.


        1. TanyaVSdannye Автор
          01.03.2026 19:41

          На основании чего вы делаете такие заявления?
          это реальный бизнес-кейс :)


          1. Kwisatz
            01.03.2026 19:41

            И что? Чудовищные убытки изза боязни упущенной выгоды тоже вполне реальны (мы буквально сейчас живем все в этой ситуации). И ошибка выжившего и куча другой дичи, которая людям кажется логичной. Не улавливаю ваш аргумент. Вы желаете утверждать что если чтото реально, оно обязательно осмысленно/логично/полезно?

            Давайте перефразирую: на основании каких данных, вы утверждаете, что пространство будет занято "более эффективно", с учетом того, что доля товара в общих продажах, без дополнительной аналитики,, о которой я говорил выше, не может являться основанием для подобного утверждения.

            PS серьезно? "неконструктивное общение"?)) при том что буквально предлагаются аргументы и анализ реальных данных?) ну как знаете))


            1. TanyaVSdannye Автор
              01.03.2026 19:41

              Я нигде вам не говорила, что без дополнительной аналитики, вы это сами придумали


              1. Kwisatz
                01.03.2026 19:41

                Тогда ответьте пожалуйста на мои вопросы, а еще лучше расскажите как посчитать то, о чем я вас спросил.


                1. TanyaVSdannye Автор
                  01.03.2026 19:41

                  Я подумаю над отдельной статьей на эту тему, в комментариях не вижу смысла это вам рассказывать, тем более, что это не относится напрямую к теме статьи


                  1. Kwisatz
                    01.03.2026 19:41

                    Статья называется "SQL для ритейла: пример 5 задач, которые я решала как аналитик ассортимента" и первый же кейс может запросто покончить с ритейлом в отдельно взятом случае. Более того, в этом же кейсе и в комментарии выше, вы "как аналитик" утверждаете что товары, составляющие нижние 5% доли продаж должны быть выведены и " можно сократить ассортимент и занять освободившееся торговое пространство более эффективно". Таким образом, вы своей статьей, вводите в заблуждение тех, кто хотел бы быть аналитиком ассортимента.
                    Более того, вы в конце статьи говорите о "Понимание бизнес-смысла", но если взять эту ветку комментариев, так ли это?
                    И, главный вопрос, учитывая вышесказанное: стоит ли доверять статье целиком?

                    Есть ощущение, что прямее уже некуда.


                    1. TanyaVSdannye Автор
                      01.03.2026 19:41

                      Это не парадигма, а наше тз, что 5% будут первыми кандидатами на вывод, добавила уточнение


                      1. Kwisatz
                        01.03.2026 19:41

                        "аналитик ассортимента" в FMCG компаниях должен оспаривать такое ТЗ, поскольку именно он в данной ситуации специалист, а специалист не должен быть молчаливым исполнителем. Особенно когда ТЗ запросто может покончить с компанией. (и как показало время - покончит)

                        PS Я очень сильно задумался причем тут "парадигма" (система взглядов, моделей, принципов и методов), по смыслу сюда просится "аксиома"


        1. abcdsash
          01.03.2026 19:41

          тут дело в том, что на самом деле все это усредненное "ниочем"... а реальность такова, что в погоне за некоей "эффективностью" или ее составляющими они же сами портят себе и репутацию и будущее...

          вот маленькие примеры: захожу в глобус иногда и еще более иногда беру жене эклеры (фирму называть не буду)... начиная с недавнего времени они, чтобы (видимо) не сильно повышать цену (хотя повысили) - сильно ухудшили рецептуру: крем стал значительно хуже... в итоге что поимели? цену подняли, качество ухудшили и (кажется, но не измерял) вес стал несколько меньше. В итоге: брать ЭТО мы уже больше не будем... а что по этому поводу скажет их "аналитика"?

          Это всего один пример... вся эта аналитика хороша при неподвижном всем остальном... а так - слишком много переменных и параметров, значительная часть из которых вылетает из анализа, хотя именно она и повлияла на принятие решения о покупке. Иными словами, найдет их анализ корреляцию между снижением спроса на этот товар с ухудшением качества товара (должна же быть такая корреляция, хоть и с небольшим временным лагом)


          1. Kwisatz
            01.03.2026 19:41

            Дак а я о чем. Когда я захожу в статью "аналитика" я ожидаю всестороннюю аналитику а не мифы и легенды которые приведут к смерти компании. А "аналитик" еще и отбиваться начинает, не отвечая по существу. Я могу пару десятков примеров рассказать, один страшнее другого, как "оптимизации" покончили с бизнесом. У меня тоже есть аналитики, и каждый из них будет уволен нахрен если будет делать наивные предположение, как автор статьи.

            Кстати история наподобие вашей: ходили с супругой в холидей, они там поставили печку и пекли собственную пиццу, очень вкусно, всегда очередь, несколько печей загруженно нонстоп. Если в 19:00 прийти, то на ожидании можно было увидеть коробок 20-30. И цена была приятная, ниже чем в ресторанах. А потом одновременно пошло ухудшение качества, уменьшение начинки, увеличение цены. За полгода было покончено с пиццей, за 2 года с магазином.

            Или, например история с пельменями, по моему из Новокузнецка (забыл за давностью лет), где итерационно уменьшили объем мяса до 0, заменив соей. Каждый раз проводили анализ, фокус группу, но сравнивали не с изначальными а с прошлой итерацией. В итоге бренд умер одним днем после крупной ярмарки, потому что оказалось, что последняя партия делает пельмешки и водичку черными.


    1. Egor_Kartin
      01.03.2026 19:41

      Я, прочитав ваш комментарий, очень воодушевился, и пошёл читать ваши статьи. Но не нашёл. Пришлось зарегистрироваться на сайте, чтобы попросить: Напишите, пожалуйста, статью на эту же тему. С вашим опытом это будет несложно, а всем очень интересно.


      1. Kwisatz
        01.03.2026 19:41

        Я попробую, но сначала нужно сдержать другие обещания. Я хорошо статьи для внутреннего пользователя пишу, а вот на хабр уже раз 5 начинал и все, ступор, надо учиться)


  1. USergey
    01.03.2026 19:41

    Давным давно был молодой sql щик, ему эту профессию посоветовал друг чтоб избавится из нищеты.

    Он прилежно закончил курсы и стажеровался пол года, где и всячески зарекомендовал себя как способный молодой чевовек.

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

    А так как мы были коллегами я спросил его что такое аналитика, и по его соображению это выборки с построением отчетов.

    Мои представления были:

    Продуктовый аналитик это такой шаман, который по костям и помету курицы должен определить куда племени двигатся дальше.

    ---

    Молодой специалист аналитиком не стал, но нашел себе работу sql щиком с ЗП в два раза больше стажерской. Его путь это самостоятельное решение задач на профильных ресурсах.


  1. ALexKud
    01.03.2026 19:41

    Аналитика она такая. Казалось бы чего проще, разобраться с CTE, оконными функциями, еще почитать о паре- тройке статистических функций и вот ты аналитик. Но мне кажется это все не аналитикой, а просто отчетом, на котором не нужно делать далеко идущих выводов. Ибо аналитика, как тут правильно заметили до меня, это исскуство прогноза о будущем с учетом движения цен, спроса, и много чего еще, я полагаю, относительно прошлых периодов. В экономике есть такая штука как кривая Лаффера. Она показывает как рулить налогами в масштабе государства, чтобы налоговая нагрузка не приводила к обнищанию населения и соответственно не только рос ВВП но и благосостояние население не уменьшалось а росло. Вот это и есть задача аналитика, как рулить ассортиментом, категориями товаров , ценами с учетом растущих налогов и падения дохода покупателей чтобы не уменьшать по крайней мере свою прибыль с учетом роста налогов и затрат и т п. Да это сложная задача. Сложнее чем писать запросы SQL. Но это и есть работа аналитика имхо.