首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL: MAX(COUNT(*)) -错误1111

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

Stack Overflow用户
提问于 2014-10-27 10:57:18
回答 2查看 387关注 0票数 0

我是MySQL的新手;我正在使用SAS,我的大脑被SAS的风格所扭曲。所以,即使我认为我看到人们问了类似我的问题,我仍然不能从他们收到的答案中理解。我为此道歉。

我有两张桌子:

包含列的film_category:

代码语言:javascript
运行
复制
category_id,film_id,

,包含列的film_actor

代码语言:javascript
运行
复制
actor_id, film_id.

我在film_id上加入了他们

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

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2014-10-27 11:06:07

这是您的查询:

代码语言:javascript
运行
复制
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;

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

要做你想做的事情,使用子查询和巧妙的聚合:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 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;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26580550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档