← Все вопросы
Как посчитать сумму и среднее заказа по каждому пользователю в SQL?
14
Есть таблица orders(id, user_id, amount). Хочу для каждого пользователя получить сколько он всего потратил и средний чек. Через что это делается?
2 ответа
22
✓ Принятый ответ — помог автору
Группируешь по user_id и в SELECT навешиваешь агрегаты:
SELECT user_id,
SUM(amount) AS total,
AVG(amount) AS avg_check,
COUNT(*) AS orders_cnt
FROM orders
GROUP BY user_id;
Правило простое: всё, что в SELECT и не обёрнуто в агрегат, должно быть в GROUP BY. Здесь это user_id. SUM даёт сумму, AVG — среднее, COUNT(*) — число заказов в группе.
Роман Ильчик AVG считает только по непустым amount, NULL он игнорирует — это важно · 16 месяцев назад
6
SUM + AVG + GROUP BY user_id.
Ваш ответ
Войдите, чтобы ответить на вопрос.