Средний чек за период: как усреднение дневных значений меняет результат
В дневном отчёте уже есть средний чек. Можно ли получить показатель за месяц, просто усреднив значения по дням?
Разберём на условном примере за два дня. Учитываем только оплаченные заказы в рублях, без возвратов. Каждому заказу соответствует одна итоговая сумма.
1 ноября:
Оплаченных заказов — 1.
Общая сумма заказов — 1 000 ₽.
Средний чек — 1 000 ₽.
2 ноября:
Оплаченных заказов — 9.
Общая сумма заказов — 900 ₽.
Средний чек — 100 ₽.
Если взять среднее арифметическое двух дневных значений, получим:
(1 000 + 100) / 2 = 550 ₽.
Но за весь период покупатели оплатили 10 заказов на общую сумму 1 900 ₽.
Правильный средний чек за период:
1 900 / 10 = 190 ₽.
Разница существенная: 550 ₽ против 190 ₽.
Почему результаты отличаются? При усреднении дневных показателей каждый день получает одинаковый вес. День с одним заказом влияет на результат так же сильно, как день с девятью.
Оба результата математически корректны, но описывают разные показатели. 550 ₽ — среднее арифметическое дневных средних чеков. 190 ₽ — средний чек по всем оплаченным заказам за период.
Если нужен второй показатель, простое усреднение дневных значений может дать неверный ответ. Иногда результаты совпадут, например при одинаковом количестве заказов каждый день. Но рассчитывать на такое совпадение нельзя.
В SQL эта ошибка возникает, когда сначала считают средний чек по дням, а затем применяют AVG к полученному столбцу. Функция усредняет дневные значения, не учитывая, сколько заказов стоит за каждым из них.
Поэтому в дневной витрине полезно сохранять исходные составляющие: сумму оплаченных заказов и их количество. Для расчёта за месяц сначала складываем суммы и количества, затем делим одно на другое. Так результат не зависит от округления дневных средних.
Если за период нет оплаченных заказов, средний чек не определён. Ноль в таком случае может создать ложное впечатление, что заказы были, но ничего не стоили.
Похожая ловушка встречается при объединении конверсий по каналам и средних показателей по филиалам. Перед усреднением стоит проверить, что именно должно иметь одинаковый вес: день, заказ, пользователь или другая единица наблюдения.
Интересно, как у вас устроены итоговые строки в BI-отчётах: показатели пересчитываются из исходных сумм и количеств или усредняются готовые значения?