2012-11-20 4 views
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 :이 쿼리가 전체 수익을 얻었다 보수.

이제 장르를 낮추고 장르 또는 카테고리별로 가장 많은 수입을 올릴 필요가 있습니다. 나는 완전히 비틀 거리고있다. .. 어떤 도움이라도 인정 될 것이다. 감사.

답변

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 

는 두 번 수익 부분을 참조 할 필요가 같은 장르 당 최대 수익은 약간 더 까다 롭습니다했던 제품 (또는 제품)을 얻으려면. 두보기가 모두 사용됨을 알 수 있습니다.

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 

이렇게하면 가장 높은 수입에 묶여있는 각 장르에 대해 둘 이상의 결과가 생성됩니다.

원하는 경우 괄호 안에보기의 선택 문을 대체하여보기없이 표시 할 수 있습니다.

+0

감사합니다. 이것은 심각한 생명의 은인이었습니다 ... 나를 올바른 길로 인도하십시오. 나는 이것에 대해 몇 시간 동안 내 머리를 감싸려고했다. 다시 한번 감사드립니다. – user1840374

관련 문제