ここで私の問題を説明しようとします。私は3つのテーブルを持っているとしましょう:
1.販売
- 販売 ID (PK)
- productID(FK) - 販売された製品を指す FK
- storeID(FK) - 商品を販売したストアを指す FK
- month - 商品が販売された月
- year - 製品が販売された年
- amount - 商品が販売された金額
2.製品
- 製品 ID (PK)
- 商品名
3.保管する
- ストア ID (PK)
- 店舗名
次のクエリが必要です:すべての店舗について、指定された年にその店舗で最も売れた製品を表示します。したがって、結果は次のようになります。
STORE PRODUCT AMOUNT
store1 product1 XXX amount
store2 product2 YYY amount
store3 product1 XYX amount
各金額は、その年のすべての金額の最高額になります。
私が今できることは次のとおりです。
SELECT store.storeName
, product.ProductName
, SUM(sales.ammount)
FROM sales
JOIN product ON sales.productID = product.productID
JOIN store ON sales.storeID = store.storeID
GROUP BY store.storeName
, product.ProductName
WHERE sales.year = 'XXXX'
;
製品ごとおよび店舗ごとの合計を取得する場所。この後、カーソルを使用してテーブル全体を行ごとに移動し、その店舗の金額が最も高いテーブルを確認できます。
しかし、「単純な」クエリでそれを行うことができるかどうか疑問に思っていましたか?
Oracle 11g データベースに SQL Developer を使用しています。そして、私は助けていただければ幸いです。