0

可能重复:
在 Plsql 中选择第二行

我有这个数据库电影(id:int,name:string,years:int,rating:float)

电影流派(movie_id:int,流派:字符串)

我需要找到对于每种类型,找到评分第二好的电影。这可以推广到找到第 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 正确指出的那样,您还可以替换ROW_NUMBERDENSE_RANKwhich 将为您处理分组。

祝你好运。

于 2013-02-02T02:39:30.277 回答