2016-03-22 5 views
0

私は複数の列でこれをグループ化しようとしたので、これは特に質問によるグループであるかどうかはわかりません。複数のmysqlグループ

enter image description here

私は別の国のために注文TOTAL_PRICEの合計を取得したいと思いますが、ORDER_IDによってグループ化:基本的な問題は、テーブルのこのようなものです。だからフランスの場合、total_priceの合計は8000でなければならず、2つの行が同じ注文のためです。私のSQLは明らかに間違っているので、私はこれを取得していません。

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

オーダーIDは一意ではありません。最初の2つの行は、フランスからの注文だけのグループである同じorder_id –

答えて

0

いいえ、GROUP BYはそれほどあなたを得ません。 GROUP BY国の場合、国ごとに1つの行が表示されます。

は、2番目のクエリせずにこれを行う方法はありませんので、このようなものにする必要があると思います:(。あまりにINNER JOIN仕事とテーブルの2番目のコピーに)

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 

上記のクエリを実行してください。

+0

を持っています。 6000、2000、3000のテーブルを返します –

+0

はい、order_id 1,4,5のレコードをグループ化します。 それはあなたが欲しいものです、そうですか? order_id 1には、それぞれtotal_price 3000の2つのレコードがあります。 Thats 6000. for order_id 4その2000とorder_id 5 3000. – Priyanshu

+0

いいえ、OPに記載されていません、私は8000が返されます。これは、フランスにおける一意の受注総額の合計です。行は、注文のさまざまな部分の内訳です。最初の2行は同じ順序です。 3000は重複合計金額です。 –

関連する問題