订阅更新

合作至少三次的演员和导演

SQL 实战 123 题 · 第 48 题 简单 约 2 分钟读完

LeetCode 1050 · 多列分组、HAVING

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

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

易错点

  • 只按演员或只按导演分组,含义就变成「某人合作了几次」,不是「这一对合作了几次」。
刷题进度保存在当前浏览器