0

我有一个电影数据库来组织我的收藏,但我也用它来了解更多的 mySQL。在发展过程中,我发现了颠簸(很多),现在我的问题是:

ACTORS

  • id_actor
  • 姓名
  • 性别

MOVIEACTORES

  • id_movieactors
  • id_movie
  • id_actor

我想计算拥有最多电影的演员的前 5 名(前 10 名、前 20 名或其他!),然后是拥有最多电影的女演员的前 5 名!

我有这个:

  SELECT filmesactores.id_actor, 
         COUNT( * ) AS contagem
    FROM filmesactores
GROUP BY id_actor
ORDER BY contagem DESC 
   LIMIT 10 

但是这个代码并没有区分演员和女演员。我觉得解决方案可能很简单,但以我的知识,我现在遥不可及。任何人?

4

1 回答 1

1

分组依据sex, name将按性别分开演员的计数,但由于您想将限制应用于每个性别组(即前 5 名演员和前 5 名女演员),请执行两个查询并将它们的结果联合起来:

SELECT name, COUNT(*) AS moviecount
FROM actors
JOIN movieactores ON actors.id_actor = movieactores.id_actor
WHERE sex = 'Male'
GROUP BY name
ORDER BY COUNT(id_movie) DESC
LIMIT 5

UNION

SELECT name, COUNT(*)
FROM actors
JOIN movieactores ON actors.id_actor = movieactores.id_actor
WHERE sex = 'Female'
GROUP BY name
ORDER BY COUNT(id_movie) DESC
LIMIT 5
于 2011-06-27T23:28:03.240 回答