用where子句查询两张表的结果

Querying result for the two tables with where clause

我有一个 SQL 测试的代码问题。不用说,这是我以前没有遇到过的一些新概念。

包含 {columns} 的表格是:

 phones {Name, Phone_Number}
 
 calls {id,caller,callee,duration}

查找总通话时长 大于或等于 10 分钟 的客户的“姓名”。请注意,持续时间需要在呼叫者和被呼叫者列上求和,以获得大于 10 分钟的总持续时间。

条件:显示只有名称列的查询。

方法是什么?

我需要使用两次 join 关键字然后根据名称执行分组是否正确?

不,您需要的是让呼叫者和被呼叫者处于同一位置,以便对个人的持续时间求和。这样做之后,您可以加入手机 table。这是最简单的 UNION of select on call 与另一个 select call selecting first caller and then callee.参见 fiddle here。你没有给出完整的 table 定义,缺少数据类型所以我不得不做一些假设。 None越少过程相同

with call_list (id, duration) as 
     (select caller id, duration 
        from calls 
       union all 
      select callee, duration 
        from calls
    order by id
     )  
select p.name, p.phone_number, sum(cl.duration) 
  from call_list cl
  join phones    p  on (p.id = cl.id)
 group by p.name, p.phone_number;