使用IMBd数据集时遇到一个问题,我似乎无法找出答案。问题是:
创建一个表,其中包含每个电影的平均流派数 每个流派
我们有两个表:电影:id,name;流派:id(movieId),流派
电影:
id,name
1,Toy Story
2,Jumanji
3,Grumpier Old Men
4,Waiting to Exhale
5,Father of the Bride Part II
6,Heat
类型:
id,genre
1,Animation
1,Children's
1,Comedy
2,Adventure
2,Children's
2,Fantasy
3,Comedy
3,Romance
4,Comedy
4,Drama
5,Comedy
6,Action
6,Crime
6,Thriller
我可能错误地解释了这个问题,但是输出不应该是3栏:类型,电影和计数吗?
我的回答将基于以下内容:
SELECT genre, name, AVG(COUNT(*)) FROM movies
JOIN genres ON genres.id=movies.id
GROUP BY name;
关于如何解释问题和答案的任何想法?
答案 0 :(得分:3)
好吧,我将从每个电影的流派数开始:
select id, count(*) as num_genres
from genres g
group by id
然后,我将该信息“附加”到流派信息中。以及汇总和平均值:
select g.genre, avg(m.num_genres)
from genres g join
(select id, count(*) as num_genres
from genres g
group by id
) m
on g.id = m.id
group by g.genre;
答案 1 :(得分:0)
我同意戈登首部电影的流派数量
select id, count(*) as num_genres
from genres g
group by id
但是每部电影的平均流派应该是
SELECT AVG(num_generes)
FROM (
SELECT id, count(*) as num_genres
FROM genres g
GROUP BY id
) t