合作至少三次的演员和导演
LeetCode 1050 · 多列分组、HAVING
面试怎么回答
GROUP BY actor_id, director_id 后 HAVING COUNT(*) >= 3。多列分组按组合聚合,每个组合就是一对演员和导演。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
合作记录表每行是一次合作(演员、导演、时间戳)。找出合作过至少三次的演员和导演组合。
表结构
- ActorDirector:actor_id、director_id、timestamp(主键)
思路
按(演员, 导演)两列分组,HAVING COUNT(*) >= 3。多列分组时,组的含义是「这两列的组合」。
参考解法
select actor_id,director_id
from ActorDirector
group by actor_id,director_id
having count(*)>=3
易错点
- 只按演员或只按导演分组,含义就变成「某人合作了几次」,不是「这一对合作了几次」。