hive 下一行时间减去上一行,多行时间减法

一个人有多行时间,需要每一行 时间与下一行时间间隔

也就是:利用下一行的时间 减去上一行的时间

1,原始数据长这样: 根据需要保留分秒

usercode time1
8501 2019-07-24
8501 2019-07-25
8501 2019-07-30
8501 2019-08-01
8501 2019-08-02

2,最后需要的数据成这样: 在这里插入图片描述

3,怎么实现

select usercode,
time1,
ROW_NUMBER() OVER(PARTITION BY usercode ORDER BY time1) AS rank1,
LAG(time1,1) OVER(PARTITION BY usercode ORDER BY time1) AS time2
from 表1
;

4, gap 是下一步时间差做减法

select usercode,time1,rank1,time2 ,datediff(time1,time2)gap from(
select
usercode,
time1,
ROW_NUMBER() OVER(PARTITION BY usercode ORDER BY time1) AS rank1,
LAG(time1,1) OVER(PARTITION BY usercode ORDER BY time1) AS time2
from 表1 )a

– 可以改序号,或者里面填充
– LAG(daily,1,‘1970-01-01’) OVER(PARTITION BY usercode ORDER BY daily) AS last_1_time
– LAG(activatedtime,2) OVER(PARTITION BY usercode ORDER BY activatedtime) AS last_2_time

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值