Surrika

Матрица ABC XYZ анализа: как распределить товары по 9 группам

ABC XYZ анализ делит товары по двум признакам: сколько выручки приносит товар и насколько ровно он продается по месяцам. Совмещение дает 9 групп, и у каждой свое правило закупки. Товар из группы AX держат в наличии всегда, позиции из CZ выводят или заказывают под клиента.

Формула

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

Группа товара = буква ABC по накопленной доле выручки + буква XYZ по коэффициенту вариации продаж

ABC
вклад товара в выручку: A, B или C
XYZ
стабильность продаж по месяцам: X, Y или Z

Пример расчета

Накопленная доля выручки 62 %
Коэффициент вариации 8 %
Группа AX

62% попадает в A, 8% попадает в X: группа AX

  • AX держат в наличии всегда, CZ кандидаты на вывод или работу под заказ.
  • Обе буквы считают за один и тот же период, иначе матрица смешивает разные годы.

Тот же вопрос к выгрузкам в Surrika

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

Сколько товаров в каждой группе матрицы ABC-XYZ за последние 12 месяцев?

Товары в матрице ABC-XYZ

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

WITH items AS (
    SELECT product, sum(revenue - returned_revenue) AS revenue
    FROM sales
    WHERE date > (SELECT max(date) FROM sales) - INTERVAL 12 MONTH
    GROUP BY product
),
abc AS (
    SELECT product,
           CASE WHEN sum(revenue) OVER (ORDER BY revenue DESC ROWS UNBOUNDED PRECEDING) / sum(revenue) OVER () <= 0.8 THEN 'A'
                WHEN sum(revenue) OVER (ORDER BY revenue DESC ROWS UNBOUNDED PRECEDING) / sum(revenue) OVER () <= 0.95 THEN 'B'
                ELSE 'C' END AS abc
    FROM items
),
monthly AS (
    SELECT product, date_trunc('month', date) AS month, sum(units) AS units
    FROM sales
    WHERE date > (SELECT max(date) FROM sales) - INTERVAL 12 MONTH
    GROUP BY ALL
),
xyz AS (
    SELECT product,
           CASE WHEN stddev_pop(units) / avg(units) <= 0.1 THEN 'X' WHEN stddev_pop(units) / avg(units) <= 0.25 THEN 'Y' ELSE 'Z' END AS xyz
    FROM monthly
    GROUP BY product
)
SELECT xyz.xyz, abc.abc, count(*) AS products
FROM abc
JOIN xyz USING (product)
GROUP BY ALL
ORDER BY abc, xyz

Когда смотрят на матрицу ABC XYZ и какие решения по ней принимают

Матрицу смотрят перед закупкой и при пересмотре ассортимента. Товар из группы AX держат в наличии всегда: он дает заметную долю выручки и продается ровно по месяцам. Позиции из групп BY и BZ закупают с запасом под спрос и проверяют остаток чаще. Группа CZ указывает на кандидатов на вывод или на работу под заказ. По матрице решают, что пополнить в первую очередь, что заморозить и где сменить поставку на заказ под клиента.

Из каких выгрузок и колонок берут цифры

Цифры берут из выгрузки продаж: колонки «дата», «артикул» или «название товара», «количество», «цена», «выручка». Период один для обеих букв, для магазина это последние 12 месяцев. Для ABC суммируют выручку по каждому товару и сортируют по убыванию. Для XYZ считают продажи по месяцам внутри того же периода и находят коэффициент вариации. Если в выгрузке есть возвраты, их вычитают из количества и выручки до расчета. Товары с историей короче периода помечают отдельно, чтобы короткая история не попала в Z.

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

Читают матрицу по двум осям: буква ABC показывает вклад в выручку, буква XYZ показывает ровность продаж. В примере вымышленного магазина 8 товаров попали в AY, 2 в AZ, 1 в BX, 1 в BY, 1 в BZ и 2 в CX: эти числа описывают только тот набор данных и не служат ориентиром. Смотрите на распределение: если в Z уходит много товаров из A, проверьте сезонность и длину истории. Пустая ячейка тоже результат: она показывает, что в выбранном периоде товаров этой группы нет.

Чем ABC XYZ анализ отличается от ABC, XYZ и оборачиваемости

ABC анализ делит товары только по вкладу в выручку, XYZ только по стабильности продаж. Матрица ABC XYZ соединяет обе буквы и показывает, как товар ведет себя по двум признакам сразу. Оборачиваемость считает, за сколько дней продается средний остаток, и отвечает на вопрос о запасе на складе. Матрица отвечает на вопрос о правиле закупки. Оборачиваемость показывает, насколько быстро уходит уже купленное. Для решения по одному товару смотрят все три показателя: долю выручки, вариацию и скорость оборота.

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

Обе буквы за разные периоды

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

Пороги меняют между пересчетами

Границы A, B, C и X, Y, Z сдвигают от месяца к месяцу, и группа товара меняется без изменений в продажах. Зафиксируйте пороги в регламенте и сравнивайте результаты только на одинаковых правилах.

Короткая история попадает в Z

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

CZ выводят без проверки остатка

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

Вопросы

Что означает группа AX в ABC XYZ анализе?

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

Сколько групп в матрице ABC XYZ?

Девять: три буквы ABC и три буквы XYZ дают девять сочетаний от AX до CZ.

За какой период считать матрицу ABC XYZ?

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

Что делать с товарами из группы CZ?

Это кандидаты на вывод или на работу под заказ. Перед решением проверьте остаток на складе и срок годности.

Можно ли строить матрицу по количеству продаж?

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

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

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

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

По теме

Все метрики и методы