**Контекст.** Вы аналитик маркетплейса. Продуктовая команда готовит квартальный обзор и просит по каждой категории товаров посчитать ключевые метрики маркетплейса: GMV (валовый оборот), комиссию площадки, take rate (эффективную ставку комиссии) и долю категории в общем GMV. Take rate — центральная метрика unit-экономики маркетплейса: она показывает, сколько площадка зарабатывает с каждого рубля оборота.
**Дано.** Таблица `marketplace_orders` — по строке на успешно оплаченный заказ:
| колонка | тип | описание |
|---|---|---|
| `order_id` | int | идентификатор заказа |
| `category` | text | категория товара |
| `gmv` | numeric | сумма заказа (оборот), ₽ |
| `commission` | numeric | комиссия, удержанная площадкой с заказа, ₽ |
| `status` | text | статус заказа (`paid`, `refunded`, `canceled`) |
Пример данных:
[см. код в задании]
**Задание.** По категориям (только заказы со статусом `paid`) посчитайте:
1. `orders` — число оплаченных заказов.
2. `gmv` — суммарный оборот.
3. `commission` — суммарная комиссия площадки (net revenue категории).
4. `take_rate_pct` — эффективная ставка комиссии = commission / gmv, в процентах, округлить до 2 знаков.
5. `gmv_share_pct` — доля категории в общем GMV всех категорий, в процентах, округлить до 2 знаков.
Отсортируйте по `gmv` убыванию.
**Формат ответа:** таблица с колонками `category`, `orders`, `gmv`, `commission`, `take_rate_pct`, `gmv_share_pct`.
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE marketplace_orders (
order_id INT,
category TEXT,
gmv NUMERIC,
commission NUMERIC,
status TEXT
);
INSERT INTO marketplace_orders (order_id, category, gmv, commission, status) VALUES
(1, 'Электроника', 30000, 3000, 'paid'),
(2, 'Электроника', 20000, 2200, 'paid'),
(3, 'Электроника', 15000, 1500, 'refunded'), -- вернули: не считаем
(4, 'Одежда', 5000, 750, 'paid'),
(5, 'Одежда', 3000, 480, 'paid'),
(6, 'Одежда', 4000, 600, 'canceled'), -- отмена: не считаем
(7, 'Книги', 1200, 180, 'paid'),
(8, 'Книги', 800, 120, 'paid');
GMV take rate unit-экономика SQL агрегация
Это задание для уровня easy. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «Метрики» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: GMV, take rate, unit-экономика, SQL, агрегация.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «Метрики», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания