2017-01-25 10 views
1

このコード:ソート結果

SELECT ProductID, COUNT(ProductID) AS Occurrences 
FROM OrderDetails 
Group By ProductID; 

は、ORDERDETAILSテーブルで発生productIDsを取り、その製品が含まれているどのように多くの注文数え、その後のproductIDは降順数えソートする私の試みです。素人の言葉で言えば、最も売れ行きのある商品が一番上に出るように、自分の数を降順で表示して、どの商品が最も人気があるのか​​を見せたいと思います。私が持っている問題は、 "Group by"を "Occurrences"で使用しようとすると、グループで集計関数を使用できないというエラーが発生するということです。 ProductIDでグループ化すると、その場所全体にカウントが表示されますが、これは情報を表示する最も有用な方法ではありません。

答えて

1

このべき作品:

SELECT ProductID, 
     sum(Qty) AS Occurrences 
FROM OrderDetails 
Group By ProductID 
Order By sum(Qty) DESC; 

COUNTはあなたに興味深いを与える:あなたは本当にあなたが製品の人気がSUMないCOUNTであるかを知りたい場合に使用したい何

SELECT ProductID, COUNT(ProductID) AS Occurrences 
FROM OrderDetails 
Group By ProductID 
Order By COUNT(ProductID) DESC; 
1

結果。それとも、このように注文の数を使用することができます:私を混同

select ProductID 
     count(distinct OrderNumber) as NumberOfOrders 
from OrderDetails 
group by ProductID 
order by count(distinct OrderNumber) desc; 
+0

唯一のことは、「数量」を使用しました。私はあなたが何か他のもののプレースホルダーとしてそれを使用していたかどうかはわかりませんが、私のコードでは、各製品がorderDetailテーブルに表示される回数を数える(または合計する)ためProductIDを使用します。 –

+0

@TophHughes - 私は "Qty"を使用しました。なぜなら、あなたのテーブルで列が何が呼び出されているのか分からないからですが、通常は "OrderDetails"テーブルに列数量があります。製品Aが10回注文され、製品Bが5回注文され、製品B注文の1つが数量12の場合を考えてみます。製品Bがより一般的であると考えます。 – Anand

関連する問題