image.png
一、解题思路
我首先想到的是通过group by进行分组,然后再进行统计,然后我将分组count(actor_id,director_id) 这样子会报错,后来再想都已经进行了分组了,就没必要在这样了,直接进行count(*)就可以了

二、语句

  1. 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(*)的最大值

image.png
现在有两个表,一个是Project表,另一个是Employee表。

现在要求雇员最多的项目。

求雇员最多的项目,我们先要将项目进行分组,然后用count(*)就可以查看每个项目中有多少个雇员的了

  1. 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 只要这个值一样,就可以查询出来了。

  1. 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语句