MySQL:MAX(COUNT(*)) - 错误1111

时间:2014-10-27 02:57:18

标签: mysql count max

我是MySQL新手;我正在使用SAS,我的大脑以SAS风格扭曲。 所以,即使我认为我看到人们提出类似于我的问题,我仍然无法理解他们收到的答案。我为它道歉。

我有两张桌子:

包含列的film_category:

category_id,film_id,

,包含列的film_actor

actor_id, film_id.

我在film_id上加入了他们

。问题是:     每个电影类别中最受欢迎的演员是什么? 共有16个类别,200个演员,1000部电影。

SELECT film_actor.actor_id,MAX(COUNT(actor_id))
FROM film_actor JOIN film_category 
ON film_actor.film_id = film_category.film_id
GROUP BY film_category;

果然,只要我加上MAX,我就会收到错误1111 ... 如果我的问题不明确,请告诉我。 谢谢! -Vera

2 个答案:

答案 0 :(得分:1)

这是您的查询:

SELECT fa.actor_id, MAX(COUNT(fa.actor_id))
FROM film_actor fa JOIN
     film_category fc
     ON fa.film_id = fc.film_id
GROUP BY fc.film_category;

这是无效的,因为您无法嵌套聚合函数。

要做你想做的事,请使用子查询和聪明的聚合:

select film_category, max(numfilms) as maxnumfilms,
       substring_index(group_concat(actor_id order by numfilms desc), ',', 1) as actor_id
from (select fc.film_category, fa.actor_id, count(*) as numfilms
      from film_actor fa join
           film_category fc
           on fa.film_id = fc.film_id
      group by fc.film_category, fa.actor_id
     ) ac
group by film_category;

答案 1 :(得分:0)

发生最多的演员: SELECT category_id AS cid,     (SELECT actor_id FROM film_actor加入film_category   ON film_actor.film_id = film_category.film_id         WHERE category_id = cid         GROUP BY actor_id         按COUNT(*)DESC排序         LIMIT 0,1)AS topActor 来自film_actor JOIN film_category   ON film_actor.film_id = film_category.film_id GROUP BY category_id;