Помогите построить правильно MySQL запрос

248
31 марта 2018, 14:01

Ссылка на задание 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

Как сейчас:

Должно быть:

Answer 1

не очень красивое решение, но рабочее: предварительно просуммировать результат с группировкой по клиенту и номеру заказа:

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
READ ALSO
MySql округление

MySql округление

Всем привет, помогите создать запросОкруглить число в таблице, например 1287->1290, 1423->1420, заранее спасибо!

215
Реализация Unity client - Unity server - php - mysql

Реализация Unity client - Unity server - php - mysql

Добрый день, пишу браузерную игру(не для серьезных целей, просто хобби), возникло несколько вопросов:

228
Планировщик задач в Unity3d (Сервер)

Планировщик задач в Unity3d (Сервер)

Можно ли реализовать Планировщик задач на Юнити (сервер)?

230
Как спарсить базу [требует правки]

Как спарсить базу [требует правки]

Надо сохранить в таблицу данные с базы не могу сообразить как

307