基本上我正在做一家电影租赁公司数据库。 我需要能够提供比其他类别的其他电影赚更多钱的电影的名称。
目前,我有一张产品表和租赁表。
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美元,所以这是一个简单的计算,只计算一个独特的租赁号码创建的次数,并乘以固定费用。
我现在需要打破这一点,并为每种类型或类别提供最高收入。我完全难过......任何帮助都会受到赞赏。谢谢。
答案 0 :(得分: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
要获得Genre的最高收入,您可以使用该视图,我将创建另一个名为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
要获得具有每种类型最大收入的产品(或多个产品),因为您需要两次参考收入部分,这样会有点棘手。您会注意到两个视图都已使用。
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
如果每个类型都与最高收入者并列,这将产生多个结果。
如果您愿意,可以通过替换括号内的视图的select语句来获取视图。