2016-03-22 4 views
0

Я не уверен, что это определенно группа под вопросом, поскольку я пробовал группировать это по нескольким столбцам. Основная проблема заключается в таблицу, как это:mysql group by multiple

enter image description here

Я хотел бы получить сумму TOTAL_PRICE порядка для разных стран, но сгруппированы по order_id. Таким образом, для Франции сумма total_price должна быть 8000, так как две строки для одного и того же порядка. Мой sql явно не прав, поскольку я не получаю этого.

SELECT sum(total_price) as total_price_per_country 
FROM cars 
WHERE (country IN ('France')) 
group by order_id, country; 
+0

order_id не является уникальным. Первые две строки имеют тот же order_id –

ответ

0

Nope, GROUP BY не совсем вам понравится. Если у вас GROUP BY страна, вы получаете по одной строке в каждой стране.

Там нет никакого способа сделать это без второго запроса, поэтому он должен был бы быть что-то вроде этого: (. INNER JOIN ко второй копии таблицы будет работать тоже)

SELECT *, (SELECT SUM(total_price) FROM cars AS c2 WHERE c2.country = cars.country) AS total_price_per_country 
FROM cars 

0
select sum(total_price) from cars where country = 'France' group by order_id 

Try выше запроса

+0

, который просто группируется по заказам из Франции. возвращает таблицу с 6000, 2000 и 3000 –

+0

Да, чтобы группировать запись с помощью order_id 1, 4 и 5. Вот что вы хотите, правильно? Для order_id 1 у вас есть две записи с total_price 3000 каждый. Thats 6000. для order_id 4 его 2000 и для order_id 5 его 3000. – Priyanshu

+0

Нет, упомянутый в OP, я хочу вернуть 8000. Это сумма общей стоимости уникальных заказов во Франции. Строки представляют собой разбивку различных частей порядка. Первые две строки имеют одинаковый порядок. 3000 - это общая сумма в два раза –