首页 > 解决方案 > SQL Excercise(演员人数众多的电影)

问题描述

我正在做一个 SQL 练习,任务是:输出所有涉及超过 9 个演员的电影。还要指定演员的数量,按 Number_Actors 升序排序,然后按电影标题排序。放映列表:Film_Id、电影名称、Number_Actors。不幸的是,我被卡住了,不知道我做错了什么。

SELECT film_id, title, COUNT(film_id) AS number_actors 
FROM (
   SELECT film.title
   FROM film
   INNER JOIN film ON film_actor.film_id = film.film_id
   WHERE number_actors > 9
)
GROUP BY number_actors
ORDER BY number_actors, film

以film_id为主键的表film

table film_actor,连接table film和actor

表 actor,以 actor_id 作为主键

标签: sql

解决方案


您可以通过表格中的聚合得到每部电影的演员人数film_actor
如果您还设置了条件......在子句中涉及超过 9 个演员HAVING,那么您只会得到您想要的电影的 ID:

SELECT film_id, COUNT(*) Number_Actors
FROM film_actor
GROUP BY film_id
HAVING COUNT(*) > 9

您可以将表加入film到上述查询中:

SELECT f.film_id, f.title, t.Number_Actors
FROM film f
INNER JOIN (
    SELECT film_id, COUNT(*) Number_Actors
    FROM film_actor
    GROUP BY film_id
    HAVING COUNT(*) > 9
) t ON t.film_id = f.film_id
ORDER BY t.Number_Actors, f.title

推荐阅读