1

基本的に私は映画レンタル会社のデータベースをやっています。そのカテゴリー内の他のどの映画よりも多くのお金を稼いだ映画の名前を付けられるようにする必要があります.

現在、商品テーブルとレンタルテーブルがあります。

Product – 
Attributes: (Product_ID, Product_Title, Rating, Release_Date, Genre, Length_of_Movie, Director_Name, Key_Actor, Num_Copies)
PK – Product_ID

Rental – 
Attributes: (Rental_ID, Member_ID, Product_ID, Date_Rented, Date_Returned)
PK – Rental_ID
FK – Member_ID, Product ID

各レンタルの値は $1.00 です。全てのレンタルの収益を得ることができましたが、ジャンル別、カテゴリ別では苦労しています。このクエリで全体として収益を得ました。

Select sum(count(Rental_ID) *1) as Revenue 
from Rental
Group by Rental_ID;       

* *すべてのレンタルは 1.00 ドルなので、一意のレンタル番号が作成された回数をカウントし、それにフラット料金を掛けるだけの簡単な計算でした。

私は今、それを分析し、ジャンルまたはカテゴリごとに最高の収益を上げる必要があります. 私は完全に困惑しています...どんな助けもいただければ幸いです。ありがとう。

4

1 に答える 1

0

私はこれをテストしていませんが:

次のように、製品ごとの収益を得るビューを作成します

Create View RevenuePerProduct As
Select
  r.Product_ID,
  Count(*) As Revenue -- as $1/rental we can just count
From
  Rental r
Group By
  r.Product_ID

ジャンル別の最大収益を得るには、このビューを利用できます。MaxRevenueByGenre という別のビューを作成します。

Create View MaxRevenueByGenre As
Select
  p.Genre,
  Max(rpp.Revenue) As MaxByGenre
From 
  RevenuePerProduct rpp
    Inner Join
  Product p
    On rpp.Product_ID = p.Product_ID
Group By
  p.Genre

ジャンルごとの収益が最大の製品 (または製品) を取得するには、収益の部分を 2 回参照する必要があるため、もう少し注意が必要です。両方のビューが使用されていることがわかります。

Select
  best.Genre,
  best.ProductTitle,
  rpp.Revenue
From
  Product best
    Inner Join
  RevenuePerProduct rpp
    On best.Product_ID = rpp.Product_ID
    Inner Join 
  MaxRevenueByGenre mpg
    On best.Genre = mpg.Genre And rpp.Revenue = mpg.MaxByGenre

これにより、各ジャンルが最高収入で同点の場合、各ジャンルで複数の結果が生成されます。

必要に応じて、括弧内のビューの選択ステートメントを置き換えることにより、ビューなしでやっていくことができます。

于 2012-11-20T23:58:58.647 に答える