Задачи на агрегатные функции SQL
Агрегаты·junior

Средний чек одного платежа

Задача

Менеджер прокатной сети хочет понять экономику на одном платеже: «Сколько в среднем клиент оставляет за один раз? Дай средний чек по всем платежам».

Верни одно число — средний размер платежа, округлённый до копеек.

Схема данных

Учебная база проката 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

Прорешай такие задачи сам

Читать разбор полезно, а настоящая прокачка — самому писать запросы и получать обратную связь. В симуляторе живая база и проверка запросов, лёгкий режим — бесплатно.

Прорешать в бесплатной песочнице

Смежные задачи

Вопросы по теме