Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值
Posted 赵晓东-Nastu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值 相关的知识,希望对你有一定的参考价值。
一、问题
当我们使用mysql的时候MAX(COUNT(*)) 会报一下问题,那么如何解决呢?
报错 Invalid use of group function
二、场景
现在有两个表,一个是Project表,另一个是Employee表。
现在要求雇员最多的项目。
求雇员最多的项目,我们先要将项目进行分组,然后用count(*)就可以查看每个项目中有多少个雇员的了
select count(*) from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id group by p1.project_id
现在我们要求的是最大值,我们这个时候用max(count(*)) 就会报错了
三、解决方案
可以改为用order by 字段 desc limit 1 的这种方式
如果用这种方式还有可能考虑到有多个最高值是一样的情况,这个时候没有关系,我们就可以用in 只要这个值一样,就可以查询出来了。
完整的SQL
select temp.project_id from (select p1.project_id project_id ,count(*) empNumber from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id group by p1.project_id ) as temp where temp.empNumber in ( select t.count from( select count(*) count from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id group by p1.project_id order by count(*) desc limit 1 ) as t)
以上是关于Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值 的主要内容,如果未能解决你的问题,请参考以下文章
26《MySQL 教程》聚合函数(聚合函数 MIN、MAX)
mysql之count,max,min,sum,avg,celing,floor