使用IMBD的ER图,我需要通过列出演员出演电影的最早和最近的年份(但仅针对曾出演过的演员)来找到每个演员活跃的时间段至少10部电影。
我写了关于演戏时间的部分,但是我至少要挣十部电影。我知道我应该使用HAVING COUNT
到目前为止,我的答案是:
SELECT r.actor_id, min(m.year), max(m.year)
FROM roles r
LEFT JOIN movies m ON r.movie_id = m.id
GROUP BY r.actor_id
答案 0 :(得分:2)
尝试以下方法。正如我的Barmar所指出的,您不需要左联接。
SELECT r.actor_id, min(m.year), max(m.year)
FROM roles r
GROUP BY r.actor_id
Having count(*) >= 10
如果您必须更改角色的表结构以包括一个执行多个角色的单个角色的场景,则可能必须更改查询,如下所示:
SELECT r.actor_id, min(m.year), max(m.year)
FROM roles r
GROUP BY r.actor_id
Having count(distinct r.movie_id) >= 10