2016-05-16 10 views
0

私は製品のリストを持つテーブルが、スキーマは次のとおりです。集計関数の混乱

Product, Warehouse, Supplier, Order Quantity 

私がやりたいことは、ほとんどの注文量を持っている倉庫を選択し、各サプライヤです。

テーブルデータ:私は十分な情報がコメントではなくdownvoteに明確化のために私に尋ねると、私は非常に迅速に質問を編集しますしてくださいがない場合は、簡単な答えを提供するためにここにあると思い

Cornflakes, WH1, Kellogs, 10 
Cornflakes, WH2, Kellogs, 5 
Cornflakes, WH3, Kellogs, 0 
Crunchy, WH1, Cadbury, 20 
Crunchy, WH2, Cadbury, 10 
Mars,  WH1, Cadbury. 56 
Mars,  WH4, Cadbury, 8 

サンプル出力:それはそのサプライヤーの下ですべての製品のために注文する最も合計数量を持っているので、

Kellogs, WH1 
Cadbury, WH1 

倉庫番号は、このいずれかになります。

+0

は、あなたが何をしたいのサンプル出力を与えることができます。それは質問をクリアするのに役立ちます。 –

+0

完了、フィードバックいただきありがとうございます。 –

答えて

1

MS SQL 2008+

SELECT Supplier, Warehouse 
FROM (
    SELECT Warehouse, Supplier, rn=ROW_NUMBER() OVER (PARTITION BY Supplier ORDER BY SUM([Order Quantity]) DESC) 
    FROM t 
    GROUP BY Warehouse, Supplier 
) tt 
WHERE rn=1 
+0

これは天才です!できます!私は少し再フォーマットするつもりですが、ロジックは健全です。ちょっとしたことに、構文エラーがあります.OVER句のPARTITION BYとORDER BYはコンマで区切られていません。 –

+0

ミスプリントが修正されました。ありがとうございます。 – Serg

+0

あなたの答えをありがとう。私はちょうどROW NUMBERを考えなかったのです! –

0

この方法を試してください。

select a.supplier,a.warehouse,a.max(Order Quantity) from 
(select supplier,warehouse,sum(Order Quantity) as quantity from products 
group by supplier,warehouse)a 
group by a.supplier,a.warehouse 
+0

いいえ、構文エラー: "a"列またはユーザー定義関数または集計 "a.max"のいずれも見つからないか、名前があいまいです。 –

+0

私は列名が正しくないと思います。 – shankarsh15

+0

実際のクエリに基づいて列名を修正しました。あなたの答えに構文エラーがあります。 a.MAXは構文上の問題です。存在できません! –