Как объединить SUM и MAX ? - MySQL
Формулировка задачи:
Как объединить SUM и MAX ?
Имеется такая задача:
Определить заказчиков которые сделал заказы на наибольшую сумму
по сути должно быть как то так max(sum(amt)), где amt цена заказа, но это не работает.
да примера табличка:
Заказчики: имя заказчика, уникальный номер и тд
Заказы: цена, уникальный номер и тд
Подскажите пожалуйста а то я не знаю как делать.
Решение задачи: «Как объединить SUM и MAX ?»
textual
Листинг программы
SELECT cel.clnt_clnt_id AS "Id Клиента",
cel.QQ AS "Месяц",
val.QR AS "Сумма"
FROM ((SELECT q.clnt_clnt_id,
trunc(q.pay_date, 'Month') AS QQ,
SUM(q.amount_$) AS QW
FROM payments q
WHERE trunc(q.pay_date, 'Month') >=
to_date('01.09.2015', 'dd.mm.yyyy')
GROUP BY q.clnt_clnt_id, trunc(q.pay_date, 'Month')) cel JOIN
(SELECT QQ, MAX(QW) AS QR
FROM (SELECT trunc(q.pay_date, 'Month') AS QQ,
SUM(q.amount_$) AS QW
FROM payments q
WHERE trunc(q.pay_date, 'Month') >=
to_date('01.09.2015', 'dd.mm.yyyy')
GROUP BY q.clnt_clnt_id, trunc(q.pay_date, 'Month'))
GROUP BY QQ) val ON cel.QW = val.QR)
ORDER BY cel.QQ ASC;
Объяснение кода листинга программы
- В этом коде используется SQL-запрос SELECT для выборки данных из нескольких таблиц.
- Код выбирает данные из таблицы
paymentsи группирует их поclnt_clnt_idи месяцу платежа (QQ). - Затем он суммирует все платежи за каждый месяц для каждого клиента (QW).
- Затем код выбирает максимальную сумму платежей для каждого месяца (QR) из этих данных.
- Результаты первого запроса (с суммой платежей) соединяются с результатами второго запроса (с максимальной суммой платежей) с помощью оператора JOIN.
- Результаты сортируются по месяцу платежа в возрастающем порядке (cel.QQ ASC).
- В итоге выводятся
Id Клиента, месяц платежа и сумма платежей для каждого клиента.