我有两张大桌子-
calls
和
mobile_updates
. 每个
mobile_id
version
.
每次通话都有固定的时间戳
call_started
我的目标是通过最接近的人(前一个)加入这两个组织
created_at
手机更新
移动电话号码
为了得到
在普雷斯托打电话的时候。结果应该是两列:
呼叫已开始
和
由于某些原因,现有的代码并没有产生所需的结果-它只为每个结果返回最近的调用
移动电话号码
Presto不支持子查询,所以必须使用分区。怎么了?
with calls as (
SELECT
call_started
, mobile_id
from calls
)
, ranking as (
select
mu.mobile_id
, mu.version
, mu.created_at
, c.call_started
, rank() over (partition by mu.mobile_id order by mu.created_at desc) as rank
from mobile_updates mu
join calls c
on mu.mobile_id = c.mobile_id
where mu.created_at < c.call_started
)
select
call_started
,version
from ranking
where rank = 1