我想获得每个应用程序的行之间的时间差,如果时间差小于5分钟,则视为一个应用程序。
输入:
AppNumber Employee Date Time_generatedat
143270137 shiva 23/09/2019 12:24
143270137 shiva 23/09/2019 12:25
143270137 shiva 23/09/2019 12:27
143270137 shiva 23/09/2019 13:16
12339090 kalyan 23/09/2019 08:13
12339090 kalyan 23/09/2019 09:14
输出:
AppNumber Employee Date Time_generatedat output
143270137 shiva 23/09/2019 12:24 1
143270137 shiva 23/09/2019 12:25 1
143270137 shiva 23/09/2019 12:27 1
143270137 shiva 23/09/2019 13:16 2
12339090 kalyan 23/09/2019 08:13 1
12339090 kalyan 23/09/2019 09:14 2
谢谢。
您可以使用lag()
和累计金额:
select t.*,
sum(case when prev_time_generatedat > dateadd(minute, -5, time_generatedat)
then 0 else 1
end) over (partition by appnumber, date order by time_generatedat) as output
from (select t.*,
lag(time_generatedat) over (partition by appnumber, date order by time_generatedat) as prev_time_generatedat
from t
) t;