SQL:如何确定对象是否在同一位置超过 8 小时

SQL : How to determine if object in same location for >8 hours

我想知道某个物体是否已在同一位置超过 8 小时。有什么想法可以从这个数据样本中得出吗?感谢

对象ID 日期时间 纬度 经度
23 2021 年 5 月 2 日 12:00 40.11 -30.34
23 2021 年 5 月 2 日 16:00 40.11 -30.34
23 2021 年 5 月 2 日 23:00 40.11 -30.34
24 2021 年 5 月 2 日 12:00 40.11 -30.34
24 2021 年 5 月 2 日 16:00 40.11 -30.34
24 2021 年 5 月 2 日 23:00 39.88 -29.00
25 2021 年 5 月 2 日 12:00 40.11 -30.34
25 2021 年 5 月 2 日 16:00 39.88 -29.00
25 2021 年 5 月 2 日 23:00 40.11 -30.34

应该返回 ObjectID 23,因为它在同一位置 >8 小时

不应返回 ObjectID 24。它可能在同一位置超过 8 小时,但根据我们的数据,我们无法确定。

不应返回 ObjectID 24。 12:00 和 23:00 位置相同,但对象位于两者之间的其他位置 (16:00).

更新:这是在雪花

您可以将其视为间隙和孤岛问题,然后聚合以找到 lat/lon 相同的时间:

select objectid, lat, lon
from (select t.*,
             row_number() over (partition by objectid order by datetime) as seqnum, 
             row_number() over (partition by objectid, lat, lon order by datetime) as seqnum_2
      from t
     ) t
group by objectid, lat, lon, (seqnum - seqnum_2)
having max(datetime) > min(datetime) + interval '8 hour';