Средний чек одного платежа
Задача
Менеджер прокатной сети хочет понять экономику на одном платеже: «Сколько в среднем клиент оставляет за один раз? Дай средний чек по всем платежам».
Верни одно число — средний размер платежа, округлённый до копеек.
Схема данных
Учебная база проката dvdrental, одна таблица:
payment(payment_id, customer_id, amount, payment_date, ...)— платежи;amount— сумма конкретного платежа.
Решение
SELECT round(avg(amount), 2) AS avg_payment
FROM payment;
Разбор
Средний чек — это классический агрегат AVG. Он проходит по всем строкам таблицы, складывает amount и делит на количество значений. Одна строка результата, одно число — именно то, что просил менеджер.
Первый вопрос, который тут любят задать: чем AVG(amount) отличается от SUM(amount) / COUNT(*)? На чистых данных — ничем. Но как только в amount появляются NULL, ответы расходятся. AVG и SUM игнорируют NULL — они считают только по непустым значениям. А вот COUNT(*) считает вообще все строки, включая те, где amount пустой. Поэтому SUM/COUNT(*) разделит сумму на завышенный знаменатель и занизит средний чек. Если уж делить руками, то на COUNT(amount) — эта форма COUNT тоже пропускает NULL и совпадёт с AVG. В нашей таблице amount заполнен всегда, так что расхождения нет, но понимать механику надо.
ROUND(avg(amount), 2) округляет результат до двух знаков — иначе AVG вернёт длинный хвост вроде 4.200606.... Округление тут косметическое, для отчёта.
Обрати внимание: AVG считает средний чек одного платежа, а не средние траты одного клиента — это разные метрики. Если менеджеру нужно «сколько в среднем оставляет клиент за всё время», сначала суммируем по клиенту, а потом усредняем — это уже группировка, как в задаче «топ-5 клиентов по выручке», только с AVG поверх SUM. Разница между «средним по строкам» и «средним по группам» — частая ловушка в продуктовой аналитике.
Ожидаемый результат
avg_payment
---
4.20
Прорешай такие задачи сам
Читать разбор полезно, а настоящая прокачка — самому писать запросы и получать обратную связь. В симуляторе живая база и проверка запросов, лёгкий режим — бесплатно.
Прорешать в бесплатной песочнице