让我们假设这种情况:
CAR TIME
A 1300
A 1301
A 1302
A 1315
A 1316
A 1317
A 1319
A 1320
B 1321
B 1322
Run Code Online (Sandbox Code Playgroud)
我想生成另一列,列出每辆车的每次行程.每当我们在TIME上发生不连续时,我们都会考虑新的旅行.
CAR TIME TRIP
A 1300 1
A 1301 1
A 1302 1
A 1315 2
A 1316 2
A 1317 2
A 1319 3
A 1320 3
B 1321 1
B 1322 1
Run Code Online (Sandbox Code Playgroud)
是否有一些SQL函数来获取此计数?提前致谢.
你似乎想要累积的方法:
select t.*, dense_rank() over (partition by car order by grp1) as trp
from (select t.*, sum(case when grp > 1 then 1 else 0 end) over (partition by car order by time) as grp1
from (select t.*, coalesce((time - lag(time) over (partition by car order by time)), 1) as grp
from table t
) t
) t;
Run Code Online (Sandbox Code Playgroud)