一、解题思路
我首先想到的是通过group by进行分组,然后再进行统计,然后我将分组count(actor_id,director_id) 这样子会报错,后来再想都已经进行了分组了,就没必要在这样了,直接进行count(*)就可以了
二、语句
select actor_id as ACTOR_ID , director_id DIRECTOR_ID from ActorDirector group by actor_id,director_id having count(*)>=3
1、MAX(COUNT(*)) 报错 Invalid use of group function
sql MAX() with COUNT() 直接求COUN T(*)的最大值
现在有两个表,一个是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(*)) 就会报错了
Invalid use of group function
那么如何解决求count(*)的最大值呢?
可以改为用order by 字段 desc limit 1 的这种方式
如果用这种方式还有可能考虑到有多个最高值是一样的情况,这个时候没有关系,我们就可以用in 只要这个值一样,就可以查询出来了。
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)
这个是完整的SQL语句