首页 > 解决方案 > 使用 MySQL 按他们出演的电影类型列出演员

问题描述

作为我正在学习的数据科学课程的一部分,我需要解决一些(据称)高级 MySQL 问题。诚然,我之前没有使用 MySQL 的经验,所以我边走边学。我已经自己解决了一些基本和中间问题集,但在这方面遇到了麻烦。

我有一个包含 3 个表的 IMDB 数据集:

actors: id, full_name, gender
movies: id, title, year, genre
cast: actor_id, movie_id, salary

我试图找到职业最多样化的前 5 名演员(即参与不同类型的电影)。我被指示使用单个查询而不是视图来执行此操作。

我试过了:

SELECT 
    COUNT(genre)
FROM
    movies
        JOIN
    cast ON cast.movie_id = movies.id
GROUP BY cast.actor_id
ORDER BY COUNT(genre) DESC
LIMIT 5;

但这只是给了我一个数字列表,我不确定如何在其中包含演员的名字,或者它是否给了我正确的信息(演员 ID 参与的类型列表)。

假设这个问题符合论坛政策(如果不符合,请随意删除),您将如何实现呢?请解释您的解决方案,以便我也可以从中学习。谢谢。

标签: mysql

解决方案


你在这里有正确的想法,你只需要在演员表上加入它。另外,请注意“计数counts the number of non-空计数(不同类型)”来计算一个演员参与values, and assuming that every movie has a genre, you're actually counting how many movies an actor participated in. Instead, you should use了多少不同类型的电影:

SELECT   a.full_name, COUNT(DISTINCT genre)
FROM     actors a
JOIN     cast   c ON a.id = c.actor_id
JOIN     movies m ON c.movie_id = m.id
GROUP BY a.full_name
ORDER BY COUNT(DISTINCT genre) DESC
LIMIT    5

推荐阅读