Surrika

Как сравнить розничные цены на сайте и маркетплейсах по артикулам

Розничная цена по артикулу считается как выручка после скидок и возвратов, деленная на проданные штуки. Сводка по каналам показывает, где сайт дороже или дешевле маркетплейсов. Для расчета берите 12 месяцев от последней даты в данных и сравнивайте только артикулы с продажами на сайте и хотя бы на одной площадке.

Маркетплейсы

Как считать

  1. Возьмите продажи за 12 месяцев от последней даты в данных.
  2. Для каждого артикула и канала вычтите возвраты из выручки и из штук.
  3. Разделите чистую выручку на чистые штуки и округлите цену до рубля.
  4. Сведите цены сайта, Wildberries, Ozon и Яндекс Маркета в одну строку по артикулу.
  5. Оставьте артикулы с продажами на сайте и хотя бы на одной площадке, отсортируйте их по выручке.

Расчет на выгрузках магазина

Пример посчитан на выгрузках вымышленного мебельного магазина: продажи сайта и трех маркетплейсов, реклама, сделки CRM и остатки за 2024-2025 годы.

Как сравнить розничные цены на сайте и маркетплейсах по артикулам за последние 12 месяцев?

Средняя розничная цена по артикулам за 12 месяцев, рубли

SQL, по которому посчитано

WITH period_sales AS (
  SELECT
    sku,
    product,
    channel,
    sum(revenue) - sum(returned_revenue) AS net_revenue,
    sum(units) - sum(returned_units) AS net_units
  FROM sales
  WHERE date > (SELECT max(date) FROM sales) - INTERVAL 12 MONTH
  GROUP BY sku, product, channel
  HAVING sum(units) - sum(returned_units) > 0
), prices AS (
  SELECT
    sku,
    max(product) AS product,
    round(sum(CASE WHEN channel = 'Сайт' THEN net_revenue END) / nullif(sum(CASE WHEN channel = 'Сайт' THEN net_units END), 0), 0) AS site_price,
    round(sum(CASE WHEN channel = 'Wildberries' THEN net_revenue END) / nullif(sum(CASE WHEN channel = 'Wildberries' THEN net_units END), 0), 0) AS wb_price,
    round(sum(CASE WHEN channel = 'Ozon' THEN net_revenue END) / nullif(sum(CASE WHEN channel = 'Ozon' THEN net_units END), 0), 0) AS ozon_price,
    round(sum(CASE WHEN channel = 'Яндекс Маркет' THEN net_revenue END) / nullif(sum(CASE WHEN channel = 'Яндекс Маркет' THEN net_units END), 0), 0) AS ym_price,
    sum(net_revenue) AS total_revenue
  FROM period_sales
  GROUP BY sku
)
SELECT sku, product, site_price, wb_price, ozon_price, ym_price
FROM prices
WHERE site_price IS NOT NULL AND (wb_price IS NOT NULL OR ozon_price IS NOT NULL OR ym_price IS NOT NULL)
ORDER BY total_revenue DESC
LIMIT 20

Откуда берутся цифры для сравнения цен

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

Как посчитать цену по каждому каналу

Для артикула и канала сложите выручку, вычтите выручку по возвратам, сложите штуки и вычтите возвращенные штуки. Разделите чистую выручку на чистые штуки и округлите до рубля. Формула: цена = (выручка - возвраты) / (штуки - возвращенные штуки). Если чистых штук нет, цена не считается. Сводка по артикулу ставит рядом цену сайта, Wildberries, Ozon и Яндекс Маркета.

Как читать результат

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

Что делать с выводом

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

Частые ошибки

Сравнивать цену до скидок

Выручка в продажах уже после скидок. Если взять цену из прайса, разница между каналами будет завышена и решение о снижении цены окажется ошибочным.

Не учитывать возвраты

Возвраты уменьшают и выручку, и штуки. Без их вычета цена выглядит выше, особенно на маркетплейсах с высокой долей возвратов.

Брать разные периоды

Сайт и площадки нужно сравнивать за один интервал. Иначе сезонность мебели даст ложную разницу, и вы поменяете цену на основе несопоставимых данных.

Смешивать артикулы

У одного товара могут быть разные артикулы на сайте и площадке. Сравнение по названию без привязки артикула приводит к ложным парам и неверной разнице цен.

Вопросы

Что считать розничной ценой в этом расчете?

Выручку после скидок и возвратов, деленную на проданные штуки за 12 месяцев. Это средняя цена продажи по каналу. Цена в карточке товара может отличаться.

Почему по некоторым артикулам нет цены маркетплейса?

Значит, за 12 месяцев не было продаж в этом канале или все штуки вернули. Пустое значение не заменяйте нулем.

Можно ли сравнивать цены по категориям?

Да, если сложить выручку и штуки по всем артикулам категории. Для управленческих решений полезнее сравнение по артикулам, потому что внутри категории цены сильно различаются.

Как учитывать комиссию и логистику?

Комиссия и логистика не входят в розничную цену, это расходы канала. Для проверки маржи считайте их отдельно после сравнения цен.

Зачем ограничивать период 12 месяцами?

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

Посчитайте это на своих выгрузках

Бросьте выгрузки на доску Surrika и задайте вопрос обычными словами. Ответ придет графиком, а под ним будет SQL, по которому он посчитан.

14 дней бесплатно, карта не нужна.

По теме

Все задачи