0

重複の可能性:
Plsqlの2番目の行を選択します

私はこのデータベース映画を持っています(id:int、name:string、years:int、rating:float)

movies_genres(movie_id:int、genre:string)

ジャンルごとに、2番目に評価の高い映画を見つける必要があります。これを一般化して、i番目に評価された映画を見つけることはできますか?

4

1 に答える 1

3

の使用を検討してくださいROW_NUMBER()

SELECT rating maxrating, genre
FROM (
  SELECT
    rating, 
    genre, 
    ROW_NUMBER() OVER (PARTITION BY genre ORDER BY rating DESC) rn
 FROM movies_genres mg
   JOIN movies m1 ON mg.movie_id=m1.movie_id 
 GROUP BY rating,genre
) t 
WHERE rn = 2

そして、ここにSQL Fiddleがあります。

- 編集

GROUP BY rating,genre潜在的な重複を削除するために追加しました。@JW が正しく指摘しているように、グループ化を処理する which に置き換えることもできROW_NUMBERますDENSE_RANK

幸運を。

于 2013-02-02T02:39:30.277 に答える