排名超过2列 - SQL

时间:2018-01-22 21:39:48

标签: sql sql-server

我需要在这个数据库上运行一个报告,我无法弄清楚如何才能得出最终结果。我希望你能理解这个问题。

enter image description here

这是我正在研究的数据库的ERD。 我需要根据每种类型和每年的平均评分生成一份排名电影的报告。

结果应与此类似:

YEAR | Genre   | Movie Name | Rating | Rank 
2017 | Fantasy | Starwars3  | 5      | 1
2012 | Fantasy | Starwars1  | 4      | 2

到目前为止,我所做的代码看起来像这样

SELECT f.year, g.name,f.title, AVG(rating), RANK() OVER (ORDER BY AVG(rating))
FROM Film f
JOIN FilmGenre fg
ON (fg.filmid=f.id)
JOIN Genre g 
ON (g.id=fg.genreId)
GROUP BY CUBE (f.year,g.name)

代码给出错误,提前致谢。

1 个答案:

答案 0 :(得分:0)

对于您的示例结果,您似乎想要:

SELECT f.year, g.name, f.title, f.rating),
       RANK() OVER (ORDER BY rating DESC) as ranking
FROM Film f JOIN
     FilmGenre fg
     ON fg.filmid = f.id JOIN
     Genre g 
     ON g.id = fg.genreId
GROUP BY f.year, g.name, f.title, f.rating;