Ссылка на задание https://sqltest.net/#192840
Нужно добиться объединения внутри group_concat (либо иначе, любым методом) по order_id и слепить их суммы.
Текст текущего запроса:
SELECT o.`customer_name` AS Name,
substring_index(GROUP_CONCAT(
ol.order_id, ' - ', (p.`price` * ol.`quantity`) ORDER BY (p.`price` * ol.`quantity`) DESC SEPARATOR ', '
), ', ', 9) AS Result,
SUM( p.`price` * ol.`quantity` ) AS `TotalSumPerCustomer`
FROM `order` o
LEFT JOIN `order_line` ol ON ol.`order_id` = o.`id`
LEFT JOIN `product` p ON p.`id` = ol.`product_id`
GROUP BY o.`customer_name`
ORDER BY `TotalSumPerCustomer` DESC
Как сейчас:
Должно быть:
не очень красивое решение, но рабочее: предварительно просуммировать результат с группировкой по клиенту и номеру заказа:
SELECT dq.`customer_name` AS Name,
GROUP_CONCAT(
dq.order_id, ' - ', dq.order_amount ORDER BY (dq.order_amount) DESC SEPARATOR ', '
) AS Result,
SUM( dq.order_amount ) AS `TotalSumPerCustomer`
from
(SELECT o.`customer_name`, ol.order_id, SUM(p.price * ol.quantity) AS order_amount
FROM `order` o
LEFT JOIN `order_line` ol ON ol.`order_id` = o.`id`
LEFT JOIN `product` p ON p.`id` = ol.`product_id`
GROUP BY o.customer_name, ol.order_id) as dq
GROUP BY dq.`customer_name`
ORDER BY `TotalSumPerCustomer` DESC
Сборка персонального компьютера от Artline: умный выбор для современных пользователей