www.db-class.com の演習問題を解いています。遅くなりましたが、質問はまだ興味深いものです。エキストラで最後のタスクを偶然見つけましたが、解決策がわかりません。
SQL スキームは次のとおりです。
create table Movie(mID int, title text, year int, director text);
create table Reviewer(rID int, name text);
create table Rating(rID int, mID int, stars int, ratingDate date);
データベース全体はここから取得できます
質問は次のとおりです。
Q12 各監督について、監督の名前と、その監督が監督したすべての映画の中で最高の評価を受けた映画のタイトルと、その評価の値を返してください。監督が NULL の映画を無視します。
より具体的な詳細を説明するには、ここで何が問題なのか:
1 つのクエリ
select m.mid, m.title, max(r.stars) as stars
from rating r natural join movie m
where m.director is NOT NULL group by m.mid
最も評価の高い映画の ID を返します。
101 Gone with the Wind 4
103 The Sound of Music 3
104 E.T. 3
107 Avatar 5
108 Raiders of the Lost Ark 4
別のクエリ
select m.director, max(r.stars) as stars
from rating r natural join movie m
where m.director is NOT NULL group by m.director
最も評価の高い映画を持つ監督の名前を返します。
James Cameron 5
Robert Wise 3
Steven Spielberg 4
Victor Fleming 4
クエリに参加して、監督の最も評価の高い映画の名前と星を取得する方法:
James Cameron Avatar 5
Robert Wise The Sound of Music 3
Steven Spielberg Raiders of the Lost Ark 4
Victor Fleming Gone with the Wind 4