在持续时间小于10分钟的phone_number上执行SQL联接,并且只返回名称列



我有两个表;电话和电话。我正在尝试编写一个SQL查询,查找所有总共通话至少10分钟的客户端。因此,电话中的"phone_number"将与通话中的"caller"one_answers"callee"列相匹配,我们可以将通话时间相加,找出哪些名字的通话时间至少为10分钟。

手机

name    phone_number
..................
Jack    1234
Lena    3333                                     
Mark    9999                                       
Anna    7582                                   

呼叫

id  caller  callee  duration
.............................
25  1234    7582    8
7   9999    7582    1
18  9999    3333    4 
2   7582    3333    3
3   3333    1234    1
21  3333    1234    1

查询应该只按字母顺序返回名称列。

name  
.....
Anna 
Jack                                     

我知道我必须在这里使用某种类型的联接和聚合函数,但不知道如何开始。

有人有什么想法吗?

谢谢!!

嗨,您可以使用CTE(此处为结果(

with call_duration as (
select caller as phone_number, sum(duration) as duration from calls group by caller
union all
select callee as phone_number, sum(duration) as duration from calls group by callee
)
SELECT name
FROM phones p join call_duration cd on cd.phone_number = p.phone_number
GROUP BY name
HAVING SUM(duration) >= 10
ORDER BY name

最新更新