我是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
发布于 2014-10-27 11:06:07
这是您的查询:
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;发布于 2014-10-28 15:45:48
出现频率最高的参与者:选择category_id作为cid,(SELECT actor_id FROM film_actor JOIN film_category ON film_actor.film_id = film_category.film_id WHERE category_id = cid GROUP BY actor_id ORDER BY COUNT(*) DESC LIMIT 0,1) AS topActor FROM film_actor JOIN film_category ON film_actor.film_id = film_category.film_id GROUP BY category_id;
https://stackoverflow.com/questions/26580550
复制相似问题