我有一组存储两种会话的数据。这是移动数据使用与wifi数据使用的对比。
ID Session_Type
1 Cell
2 WiFi
3 Cell
4 Cell
5 WiFi
.
.
.
.
1000 Cell
1001 WiFi
期望的结果
Cell_ID. Next_WiFi_sess_id
1 2
3 5
4 5
.
.
1000 1001
我已经到了自己加入表的程度,这样做了一个id是>比wifi id,但我相信如果这是完美的解决方案。为了更好的表现,你能在一段时间内做到这一点吗?
select a.id, b.id
from
table a
join table b
where a.id > min(b.id)
2条答案
按热度按时间zynd9foi1#
这里有一个使用窗口功能的选项:你可以用一个窗口min获得下一个wifi会话;诀窍是按降序排列帧
id
:在db fiddle上演示-这是postgres,但在hive中的行为是相同的。
jei2mxaa2#
您可以使用窗口函数——具体来说,是一个累积最小值: