← Все вопросы

Как посчитать сумму и среднее заказа по каждому пользователю в SQL?

Задан 17 месяцев назад732 просмотров2 ответа
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.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект