SQL-leetcode—1050. 合作过至少三次的演员和导演

1050. 合作过至少三次的演员和导演

ActorDirector 表:

±------------±--------+
| Column Name | Type |
±------------±--------+
| actor_id | int |
| director_id | int |
| timestamp | int |
±------------±--------+
timestamp 是这张表的主键(具有唯一值的列).

编写解决方案找出合作过至少三次的演员和导演的 id 对 (actor_id, director_id)

示例 1:

输入:
ActorDirector 表:
±------------±------------±------------+
| actor_id | director_id | timestamp |
±------------±------------±------------+
| 1 | 1 | 0 |
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 1 | 2 | 3 |
| 1 | 2 | 4 |
| 2 | 1 | 5 |
| 2 | 1 | 6 |
±------------±------------±------------+
输出:
±------------±------------+
| actor_id | director_id |
±------------±------------+
| 1 | 1 |
±------------±------------+
解释:
唯一的 id 对是 (1, 1),他们恰好合作了 3 次。

题解

找出合作过至少三次的演员和导演的 id 对 (actor_id, director_id)

  • 也就是说,把它俩当做一个整体,计数超过3次的即可

方法一 group by + having

select
actor_id,director_id
from ActorDirector group by actor_id,director_id having count(1)>=3

方法二 row_number

with tmp as (
    select
actor_id,director_id,row_number() over(partition by actor_id,director_id ) as rn
from ActorDirector
)
select distinct actor_id,director_id from tmp where rn>=3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉进悬崖的狼

请博主喝杯奶茶

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值