Почему заказы растут, а выручка падает: заказы × средний чек
Содержание курса
Почему нельзя усреднять уже посчитанные средние чеки
Когда отчет строится за несколько месяцев, возникает задача подвести общий итог. Выручка и количество заказов аддитивны: непересекающиеся группы можно складывать напрямую.
Однако средний чек не складывается и не усредняется как обычное число. Рассчитаем общий чек по компонентам и сравним его с простым средним арифметическим.
Вариант на SQL
WITH monthly AS (
SELECT strftime('%Y-%m', order_date) AS month,
COUNT(*) AS paid_orders,
SUM(gross_revenue) AS gross_revenue
FROM demo_orders
WHERE status = 'paid'
AND order_date >= '2024-03-01'
AND order_date < '2024-05-01'
GROUP BY strftime('%Y-%m', order_date)
)
SELECT AVG(1.0 * gross_revenue / paid_orders) AS wrong_average,
1.0 * SUM(gross_revenue) / SUM(paid_orders) AS total_aov
FROM monthly;
Результат выполнения:
| wrong_average | total_aov |
|---|---|
| 2400.0 | 2314.285714285714 |
Вариант на pandas
wrong_average = monthly["aov"].mean()
total_aov = monthly["gross_revenue"].sum() / monthly["paid_orders"].sum()
print(wrong_average)
print(total_aov)
Вывод программы:
2400.0 2314.285714285714
Ошибочный вызов AVG(...) или .mean() дает . Это результат вычисления . Такой расчет считает, что оба месяца внесли одинаковый вклад в результат бизнеса. Но в марте было 3 заказа, а в апреле — 4. Правильный общий чек распределяет общую сумму на все 7 заказов:
Общий средний чек всегда рассчитывается строго заново из суммарных компонентов: . Складывать готовые средние чеки или применять к ним функцию усреднения нельзя.
