Отфильтруйте даты полуинтервалом [2019-01-01, 2020-01-01), сгруппируйте по месяцу и примените AVG(order_values). Убедитесь, что одна строка соответствует одному заказу.
Подсчёт среднего чека по месяцам за 2019 год
Отфильтруйте даты полуинтервалом [2019-01-01, 2020-01-01), сгруппируйте по месяцу и примените AVG(order_values). Убедитесь, что одна строка соответствует одному заказу.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
У тебя есть таблица с данными о заказах за 2019‑2020 годы. Требуется вычислить среднее значение заказа за 2019 год, разбив его по месяцам.
uuids — ID клиента
order_dates — дата заказа
orders — ID заказа
order_values — сумма заказа
order_sources — платформа
mail_ids — Номер магазина, где размещен заказ
Необходимо написать запрос, который сгруппирует данные по месяцам и покажет средний чек для каждого месяца 2019 года.
Ответ
Отфильтруйте даты полуинтервалом [2019-01-01, 2020-01-01), сгруппируйте по месяцу и примените AVG(order_values). Убедитесь, что одна строка соответствует одному заказу.
Пример PostgreSQL для условной таблицы order_data:
SELECT date_trunc('month', order_dates)::date AS month,
AVG(order_values) AS average_order_value
FROM order_data
WHERE order_dates >= DATE '2019-01-01'
AND order_dates < DATE '2020-01-01'
GROUP BY date_trunc('month', order_dates)::date
ORDER BY month;
Имя таблицы замените фактическим. Если строки представляют позиции заказа или дубли событий, сначала агрегируйте/дедуплицируйте по ID заказа, иначе средний чек исказится. AVG игнорирует NULL. Для timestamptz задайте бизнес-часовой пояс. Месяцы без заказов не появятся без календарной таблицы или generate_series.