2017-01-19 4 views
0

データベースから2005年に収益性の高い商品の上位15%を検索するクエリを作成する練習問題があります。データベースには「Saleprice、Purchaseprice」などの属性はありません。それは、PUrchaseProductDetailsやSalesOrderDetailsのようなテーブル、Unitprice、orderquantity、ProdID、LIstPrice、ActualCost、StandardPriceなどの属性を属性として持つテーブルを持っています。私はどちらを使うべきか、そして式を思いつく方法については混乱しています。私はクエリを書こうとしましたが、結果を無限に実行しました。MySQLで特定の年に最も収益性の高いアイテムを照会する方法

SELECT A.ProdID, B.ProdID, A.Unitprice - (B.Unitprice * orderquantity) Profit 
FROM SalesOrderDetails A join PurchaseOrderD B 
ON A.ProdID = B.ProdID 
WHERE year(DateOrdered) = 2005 
Group by A.ProdID 

私はこれらのタイプの質問に数時間を費やしており、私の脳は現在死んでいます。誰かが私にそれを正しい方法で指示してくれたら、本当に私を助けてくれるでしょう。

+0

テーブルの構造とサンプルデータは、状況をチェックして結果を選ぶのに役立ちます。 – Susang

答えて

0
SELECT sale.ProdID, sum(sale.Unitprice - buy.Unitprice) * sale.Qty AS profit 
FROM SalesOrderDetails AS sale 
JOIN PurchaseOrderD AS buy ON ... 
WHERE year(...) = 2005 
GROUP BY 1 
ORDER BY 2 DESC 
LIMIT 15 
+0

グループBYの番号1は何をしていますか?私はSQLにかなり新しいです、問題を解決するのが難しいと感じています。 – Truecolor

+0

1は省略形です=選択中の第1フィールド、選択中2 ==第2選択 – SIDU

+0

あなたの回答がどのように機能するかを記入してください –

関連する問題