可能重复:
select 2nd row in Plsql
我有这个数据库 电影(id:int,name:string,years:int,rating:fl oat)
movies_genres(movie_id:int,genre:string)
我需要找到 对于每种类型,找到第二好评的电影。这可以推广到 找到我评价的电影?
答案 0 :(得分: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_NUMBER
替换为可以为您处理分组的DENSE_RANK
。