Top-N с tie-breaker: топ-3 продуктов каждой категории по выручке

Middle SQL E-commerce

Условие задания

**Контекст:** Типовая задача на оконные функции. Данные e-commerce магазина:

[см. код в задании]

**Задание:** найти **топ-3 продукта каждой категории по суммарной выручке** за последние 90 дней.

**Подвох:** если у двух продуктов **одинаковая выручка** — их надо ранжировать по `product_id` **ASC** (меньший id первый), чтобы результат был детерминированным.

**Ожидаемый результат:**

| category_id | rank | product_id | revenue |
|---|---|---|---|
| 1 | 1 | 101 | 450 000 |
| 1 | 2 | 108 | 420 000 |
| 1 | 3 | 115 | 380 000 |
| 2 | 1 | 201 | 600 000 |
| ... | | | |

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

Структура для ориентира — реальные значения из эталонного решения.

CREATE TABLE orders (
  order_id     BIGINT PRIMARY KEY,
  product_id   BIGINT NOT NULL,
  category_id  INT    NOT NULL,
  quantity     INT    NOT NULL,
  unit_price   DECIMAL(12, 2) NOT NULL,
  order_date   DATE   NOT NULL
);

Темы

ranking ROW_NUMBER DENSE_RANK tie-breaker

Подсказки

Все тестовые задания →

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

Какой уровень знаний нужен для задачи "Top-N с tie-breaker: топ-3 продуктов каждой категории по выручке"?

Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: ranking, ROW_NUMBER, DENSE_RANK, tie-breaker.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания