Как объединить 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 Клиента
, месяц платежа и сумма платежей для каждого клиента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д