我有两个表;电话和电话。我正在尝试编写一个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