【发布时间】:2014-10-28 05:55:18
【问题描述】:
我正在编写一个查询,以在喜剧类型的电影中选择最多的总提名。到目前为止,我有以下查询
SELECT m.movie_title, m.release_year, COUNT(*)
FROM MOVIE m JOIN NOMINATION n
ON (n.movie_title=m.movie_title AND n.release_year=m.release_year)
WHERE m.genre='Comedy' GROUP BY m.movie_title, m.release_year;
如果我执行以下查询
SELECT m.movie_title, m.release_year
FROM MOVIE m
WHERE (m.genre='Comedy') GROUP BY m.movie_title,m.release_year);
它返回给我 3 个结果。我的动机是在类型喜剧电影中获得提名次数最多的结果。
我的逻辑不正确吗?我仍然是 sql (oracle11g) 和自学的初学者。
我查看了多个在线教程,但到目前为止没有任何帮助。
感谢大家的帮助。
【问题讨论】:
-
你的问题有点含糊。您是说您的“动机是获得一个类型喜剧电影提名次数最多的结果”,但是,在您的查询中,您按 Movie_Title 和 Release_Year 进行分组。这个 group by 不会只用一行来吸引你,它会为你提供多年来提名数量最多的电影。
-
以下答案是正确的,但是,如果您只想获得那一行(提名最高的电影),您可以从 GROUP BY 和 SELECT 中删除“release_year”。