SQLクエリが残っています。私は知っている何をしかし、私は理解できないどのように。 だから、ここで必要なスキームである:SQLのグループ化クエリ
ムービー(タイトル、ディレクター、年、ジャンル、料金)。
TITLE DIRECTOR YEAR GENRE RATE
Fight club Fincher 1999 Action 4.5
Vertigo Hitchock 1958 Drama 5
Donnie darko Kelly 2001 Thriller 3.5
ビデオ(タイトル、ディレクター、colloc)。
TITLE DIRECTOR COLLOC
Fight club Fincher 3877
Fight club Fincher 3878
Vertigo Hitchcock 5431
Vertigo Hitchcock 5432
Donnie darko Kelly 9986
賃料(colloc、dateRent、顧客、dateReturn)。
リスト、少なくとも2倍を借りたどのように多くの動画を各映画のために:
COLLOC DATERENT CUSTOMER DATERETURN
3877 2016-05-02 324 2016-05-04
3877 2016-05-20 365 2016-05-20
3878 2016-04-11 876 2016-04-12
3878 2016-06-06 112 2016-06-08
... ... ... ...
... ... ... ...
9986 2016-02-24 443 2016-02-28
そして、ここでは、クエリです。
(注:一般的に、店舗には動画ごとに複数の動画(DVD、VHSなど)があります。
私のアプローチは以下の通りである。これに到達するためには
COLLOC TITLE DIRECTOR RENTNUMBER
3877 Fight club Fincher 2
3878 Fight club Fincher 2
5432 Vertigo Hitchcock 2
5431 Vertigo Hitchcock 1
9986 Donnie darko Kelly 1
:
TITLE DIRECTOR VIDEOSNUMBER
Fight club Fincher 2
Vertigo Hitchcock 1
Donnie darko Kelly 0
私はこのような何かを表示するには、この単純なクエリ
SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM Rent
NATURAL JOIN Video
GROUP BY colloc
で開始します
しかし、この最後のステップがないので、GROUP BY/HAVINGを適切に使用することができません。 サブクエリでも成功しません。 私は別のアプローチを使用しようとしてきましたが、何も得意ではなかったので、ヒントをいただければ幸いです。
ありがとうございました。
編集:注:クエリでテーブルムービーを使用する必要はありません。私は映画が複数のビデオを持つことができることを説明するためにそこに置いています。 テーブルの例を追加しました。主キーは太字で示しています。
解決策: あなたのヒントのおかげで、私は解決策を見つけました(少なくとも2回レンタルされたビデオがないすべての映画が出てくるので、部分的です)。 はとにかく、ここにある:
SELECT title, director, COUNT(title) AS videosNumber
FROM (SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM rent NATURAL JOIN video
GROUP BY colloc
) X
WHERE rentNumber > 1
GROUP BY title
私はあなたがすべきGROUP思いtitolo – Kasnady
BYルールBY一般GROUPは言う:GROUP BY句が指定されている場合は、SELECTリスト内の各列参照が識別しなければならないのいずれかグループ化の列か、または集合関数の引数になります。 – jarlh
サンプルテーブルのデータを追加し、指定された期待値を生成します。 – jarlh