MySQL每部电影的平均流派数

时间:2019-02-04 18:47:40

标签: mysql sql count

使用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; 

关于如何解释问题和答案的任何想法?

2 个答案:

答案 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