mysql - 使用 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 参与的类型列表)。
假设这个问题符合论坛政策(如果不符合,请随意删除),您将如何实现呢?请解释您的解决方案,以便我也可以从中学习。谢谢。
解决方案
你在这里有正确的想法,你只需要在演员表上加入它。另外,请注意“计数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
推荐阅读
- google-bigquery - Azure 数据工厂:将数据从 Google Bigquery 移动到 Azure Blob
- javascript - 如何修复 puppeteer 抓取失败
- ms-access - MS Access:计算字段比 VBA 代码慢
- java - 如果禁止使用通配符数组,我可以使用哪些类型?
- amazon-web-services - 我无法使用 AWS CLI 在 Amazon S3 中创建存储桶
- java - 无法连接到 grpc 服务器得到“第一个接收到的帧不是设置”
- watermark - 如何在我的 Migradoc 文档中使用 PDF Sharp 对象
- go - 检查是否有人读过 go 频道
- python - 如何使用带有for循环的xpath(python)更改xml中的节点值?
- mysql - 无法确定语法错误的原因