маркетплейсGMVtake rateдекомпозиция метрикSQLпродуктовая аналитикапарадокс Симпсонасобеседование аналитика

Кейс маркетплейса: GMV и take rate падают — разбор

2026-07-05 14 мин

Коротко (BLUF). На собеседовании в маркетплейс дают классический кейс: «GMV за квартал вырос на 4%, а выручка платформы просела на 6%. Take rate упал с 14.8% до 13.1%. Что случилось, найди причину». Правильный ответ почти никогда не «упали продажи». В 90% таких кейсов дело в mix-shift — сдвиге структуры оборота в сторону низкомаржинальных категорий. Каждая категория по отдельности может держать take rate или даже растить его, а агрегат падает, потому что вес категорий сместился. Это парадокс Симпсона в чистом виде. Ниже — как разложить GMV на множители, какими SQL-запросами локализовать сегмент-виновника за 20 минут, и как подать это интервьюеру, чтобы получить оффер.

Кейс собран из реальных тестовых заданий аналитиков в ecom-компании (формат встречается у Ozon, Wildberries, Авито — база разборов есть на No Data No Growth) и приведён к рыночным числам РФ 2026: комиссии по категориям взяты из открытых тарифов (Robokassa, Uniseller).

Что вообще спрашивают

Формулировка на собесе выглядит так:

«Ты аналитик маркетплейса. Продакт прибегает с дашбордом: GMV квартал к кварталу +4%, но net revenue −6%, take rate съехал с 14.8% до 13.1%. Финдир в панике, СЕО просит объяснение к пятнице. У тебя есть доступ к БД заказов. Твои действия?»

Плохой кандидат сразу лезет в SQL и начинает считать всё подряд. Хороший — сначала строит дерево метрик, формулирует гипотезы, и только потом пишет запросы, которые эти гипотезы проверяют. Разберём по шагам.

Шаг 0. Разложить метрики на составляющие

Две главные метрики связаны тождеством:

$$\text{Net Revenue} = \text{GMV} \times \text{Take Rate}$$

GMV (Gross Merchandise Value) — суммарная стоимость проданного за период без учёта возвратов и скидок. Take rate — средняя комиссия платформы. Раз выручка = GMV × take rate, и GMV вырос, а выручка упала, значит виноват именно take rate. Это уже сужает поиск: проблема не в объёме продаж, а в структуре.

Дальше разложим сам GMV. Первый уровень декомпозиции:

$$\text{GMV} = \text{Заказы} \times \text{Средний чек (AOV)}$$

Второй — по природе продавца, потому что новые и старые селлеры ведут себя по-разному:

$$\text{GMV} = \text{GMV}_{\text{новые селлеры}} + \text{GMV}_{\text{старые селлеры}}$$

И, наконец, ключевое для take rate — по категориям, потому что комиссия у категорий разная. По рынку РФ 2026: электроника — 15–24%, одежда и обувь — 25–34%, крупногабарит и товары для дома ещё ниже. Именно категорийный разрез обычно и вскрывает причину.

Дерево гипотез получается такое:

Пример данных

Работаем с двумя таблицами. Заказы:

order_idseller_idcategoryorder_dategmv_rubcommission_rub
901124471Электроника2026-04-0342 9007 293
901131188Одежда2026-04-033 2001 024
901144471Электроника2026-04-0418 5003 145
901158890Товары для дома2026-04-056 700737

И справочник продавцов:

seller_idjoined_attier
44712023-11-02old
11882024-01-15old
88902026-03-20new
take_rate по строке = commission_rub / gmv_rub. Дальше — только PostgreSQL.

Шаг 1. Подтвердить, что проблема в структуре, а не в объёме

Первым делом сравним два квартала на самом верхнем уровне. Один запрос, который сразу показывает, вырос GMV или нет и куда двинулся take rate.

SELECT
    date_trunc('quarter', order_date)::date AS quarter,
    SUM(gmv_rub)                             AS gmv,
    SUM(commission_rub)                      AS net_revenue,
    ROUND(SUM(commission_rub) * 100.0
          / NULLIF(SUM(gmv_rub), 0), 2)      AS take_rate_pct,
    COUNT(*)                                 AS orders,
    ROUND(SUM(gmv_rub) * 1.0 / COUNT(*), 0)  AS aov
FROM orders
WHERE order_date >= DATE '2026-01-01'
GROUP BY 1
ORDER BY 1;

Читаем результат: если gmv растёт, orders растёт, aov примерно стабилен, а take_rate_pct падает — гипотеза H1 (падение чека) отпадает. Мы официально в мире take rate. Идём глубже.

Шаг 2. Категорийный разрез — где сидит вес

Теперь главный запрос. Для каждой категории считаем её долю в GMV в обоих кварталах и её собственный take rate. Так мы одновременно видим и вес (сдвинулся ли mix), и ставку внутри категории (упала ли она).

WITH by_cat AS (
    SELECT
        date_trunc('quarter', order_date)::date AS quarter,
        category,
        SUM(gmv_rub)        AS gmv,
        SUM(commission_rub) AS commission
    FROM orders
    WHERE order_date >= DATE '2026-01-01'
    GROUP BY 1, 2
)
SELECT
    category,
    quarter,
    gmv,
    ROUND(100.0 * gmv
          / SUM(gmv) OVER (PARTITION BY quarter), 1) AS gmv_share_pct,
    ROUND(100.0 * commission / NULLIF(gmv, 0), 2)    AS take_rate_pct
FROM by_cat
ORDER BY category, quarter;

Типичная картина, которую вернёт такой запрос:

categoryquartergmv_share_pcttake_rate_pct
ОдеждаQ1 202634.029.5
ОдеждаQ2 202624.029.6
ЭлектроникаQ1 202640.015.0
ЭлектроникаQ2 202652.015.1
Товары для домаQ1 202626.011.0
Товары для домаQ2 202624.011.0

Вот оно. Смотри внимательно: take rate внутри каждой категории почти не изменился (29.5→29.6, 15.0→15.1). Но доля высокомаржинальной одежды рухнула с 34% до 24%, а её место заняла низкомаржинальная электроника (40%→52%). Оборот перетёк туда, где комиссия вдвое меньше. Средневзвешенный take rate обязан упасть — хотя ни один селлер не платит меньше, чем платил.

Это гипотеза H2 подтверждена и H3 отклонена. И это — парадокс Симпсона: тренд «в целом» противоречит тренду «в каждой группе». Хрестоматийные разборы этого эффекта на маркетинговых данных есть в статье Google Research и в ML-разборе Rohan Paul.

Шаг 3. Посчитать вклад mix-shift численно (mix vs rate effect)

Сказать «это mix-shift» мало — на собесе попросят цифру. Раскладываем изменение take rate на два эффекта:

Формула для каждой категории $i$ (веса $w$, ставки $r$):

$$\Delta_{mix} = \sum_i (w_i^{Q2} - w_i^{Q1}) \cdot r_i^{Q1}$$

$$\Delta_{rate} = \sum_i w_i^{Q1} \cdot (r_i^{Q2} - r_i^{Q1})$$

SQL, который делает это одним запросом:

WITH cat AS (
    SELECT
        category,
        SUM(gmv_rub) FILTER (WHERE order_date < DATE '2026-04-01')  AS gmv_q1,
        SUM(gmv_rub) FILTER (WHERE order_date >= DATE '2026-04-01') AS gmv_q2,
        SUM(commission_rub) FILTER (WHERE order_date < DATE '2026-04-01')  AS com_q1,
        SUM(commission_rub) FILTER (WHERE order_date >= DATE '2026-04-01') AS com_q2
    FROM orders
    WHERE order_date >= DATE '2026-01-01'
    GROUP BY category
),
w AS (
    SELECT
        category,
        gmv_q1 * 1.0 / SUM(gmv_q1) OVER () AS w_q1,
        gmv_q2 * 1.0 / SUM(gmv_q2) OVER () AS w_q2,
        com_q1 / NULLIF(gmv_q1, 0)         AS r_q1,
        com_q2 / NULLIF(gmv_q2, 0)         AS r_q2
    FROM cat
)
SELECT
    ROUND(100 * SUM((w_q2 - w_q1) * r_q1), 2) AS mix_effect_pp,
    ROUND(100 * SUM(w_q1 * (r_q2 - r_q1)), 2) AS rate_effect_pp
FROM w;

Результат вроде mix_effect_pp = -1.63, rate_effect_pp = +0.02. Перевод на человеческий: из падения take rate на 1.7 пункта весь эффект — mix-shift, ставки тут ни при чём вообще. Это законченный количественный ответ, который можно нести финдиру.

Шаг 4. Кто двигает mix — новые селлеры?

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

SELECT
    s.tier,
    o.category,
    SUM(o.gmv_rub) FILTER (WHERE o.order_date >= DATE '2026-04-01') AS gmv_q2,
    ROUND(100.0 * SUM(o.gmv_rub) FILTER (WHERE o.order_date >= DATE '2026-04-01')
          / SUM(SUM(o.gmv_rub) FILTER (WHERE o.order_date >= DATE '2026-04-01'))
            OVER (), 1) AS share_of_total_q2
FROM orders o
JOIN sellers s ON s.seller_id = o.seller_id
GROUP BY s.tier, o.category
ORDER BY gmv_q2 DESC;

Если у tier = 'new' вся масса GMV сидит в электронике — картина сложилась: платформа провела успешную кампанию по привлечению селлеров электроники (льготный тариф, промо-выкладка), они нагнали оборот, GMV вырос, все радуются — но каждый рубль этого прироста приносит вдвое меньше комиссии, чем рубль в одежде. Отсюда рост GMV при падении выручки.

Проверить встречную гипотезу — не ушли ли старые селлеры одежды — можно LEFT JOIN ... IS NULL на активность продавцов в Q2 (тот, кто был в Q1 и пропал в Q2). Механику антиджойна для поиска «пропавших» разбираем на конкретных задачах в тренажёре SQL.

Вывод и рекомендация

Собранная история: падение take rate вызвано mix-shift, а не снижением комиссий. Оборот сместился из высокомаржинальной одежды (take rate ~29%) в низкомаржинальную электронику (~15%) из-за притока новых селлеров-электронщиков. Внутри каждой категории всё стабильно.

Рекомендация для бизнеса — не «поднять комиссии всем» (это отпугнёт тех самых новых селлеров, которых с трудом привлекли), а:

Как подать это на собеседовании

Интервьюер оценивает не финальную цифру, а ход мысли. Структура сильного ответа:

Потренировать именно такие продуктовые разборы можно на подборке кейсов — там маркетплейсные декомпозиции с числами. А типовые вопросы «почему упала метрика» с эталонными ответами собраны в базе вопросов для собеседования аналитика.

Частые вопросы

Чем GMV отличается от выручки маркетплейса?

GMV — это весь оборот на площадке, суммарная стоимость проданного за период (без возвратов и скидок). Выручка платформы — только её комиссия с этого оборота: выручка = GMV × take rate. У Ozon, например, GMV за 2023 год был 1.7 трлн ₽, а операционный денежный поток — порядка 80 млрд, то есть на два порядка меньше. Путать эти метрики на собесе — красный флаг: GMV меряет масштаб, выручка — деньги, которые реально зарабатывает платформа.

Что такое парадокс Симпсона в контексте маркетплейса?

Это ситуация, когда агрегированная метрика движется в одну сторону, а внутри каждого сегмента — в другую или никуда. Классика для маркетплейса: общий take rate падает, хотя ни одна категория свою комиссию не снижала. Причина — сдвиг весов (mix-shift): оборот перетёк в категории с низкой комиссией. Лечится всегда одинаково — не доверяй агрегату, режь на сегменты и считай mix effect отдельно от rate effect.

Как отличить падение среднего чека от mix-shift?

Разными разрезами. Падение чека видно в запросе AOV = SUM(gmv) / COUNT(orders) по кварталам — если AOV просел, а число заказов держится, дело в чеке. Mix-shift виден только в категорийном разрезе: AOV и take rate внутри каждой категории стабильны, но меняются доли (gmv_share_pct). Поэтому в кейсе всегда считают оба разреза — верхнеуровневый (заказы × чек) и категорийный (веса × ставки). Отработать оба на автоматических проверках можно в Python-тренажёре на pandas-группировках.

Какие take rate у российских маркетплейсов по категориям?

По открытым тарифам 2025–2026: электроника — примерно 15–24%, одежда и обувь — 25–34% (и растёт: WB с июля 2026 поднял комиссию в одежде до ~43% в части категорий), товары для дома и крупногабарит — ниже. Именно этот разброс в 2–3 раза между категориями и делает mix-shift таким мощным фактором: сдвиг 10% оборота из одежды в электронику стоит платформе полтора пункта take rate. Точные ставки всегда смотрят в актуальных тарифах площадки — они меняются несколько раз в год.


Хочешь довести навык до автомата — разбери реальные тестовые задания на декомпозицию метрик в разделе с заданиями и пройди бесплатный курс по SQL, где джойны, оконные функции и date_trunc объясняются на маркетплейсных данных.

Источники: 22 метрики маркетплейса — Хабр · База тестовых заданий аналитиков — No Data No Growth · Обзор комиссий маркетплейсов 2025 — Robokassa · Комиссии Wildberries 2025 — Uniseller · Visualizing Mix Effects and Simpson's Paradox — Google Research · Simpson's Paradox interview — Rohan Paul

Разбирай реальные кейсы
618 продуктовых кейсов и 545 SQL-задач с автопроверкой. Первые — без регистрации.
Решать SQL-задачи на декомпозицию →