答案

select c.name, count(f.film_id)
from film f, category c, film_category fc
where f.film_id = fc.film_id
and c.category_id = fc.category_id
and f.description like '%robot%'
and fc.category_id in (
    select category_id
    from film_category
    group by category_id
    having count(film_id)>=5 /*包含电影数量超过5部的分类列表*/
    ); /*考察like, 通配符%, having*/

错误答案

select c.name, count(f.film_id)
from film f, category c, film_category fc
where f.film_id = fc.film_id
and c.category_id = fc.category_id
and f.description like '%robot%'
and count(fc.category_id)>=5; 

错误原因:
描述信息(film.description)中包含robot的电影对应的分类不一定只有一个,所以需要额外用一个select,先筛选出来包含电影数量超过5部的分类,而不是直接count(fc.category_id)>=5。

题干中,“而且还需要该分类包含电影总数量(count(film_category.category_id))>=5部”,里面的(count(film_category.category_id))>=5感觉就是在诱惑我们答题的时候直接用,但实际上,不看这个代码,只看文字也可以理解题意。