我有一个问题更像是想办法解决我的问题。
所以问题是:
每两分钟我就会收到一行新的信息。它们是:
ID_VEIC - Vehicle ID
DT_POSI - Position date
LAT - latitude
LONGI - longitude
SPEED - car speed when positioning
GMT - Vehicle gmt.
其中有几个位置的速度等于零,在我的例子中,这表明车辆已停止。如果车辆有多个停止位置(速度=0),我必须进入,只选择两个移动位置之间的最后一个停止位置。
用图像解释:
在图像中,选择了两条速度为0的线。我只需要显示这段时间的最后一行,在第11行的情况下,仍然需要显示速度大于0的所有其他行。
更多详情请参见:
当前结果集:
ROWNUM ID_VEIC DAT_POSI LAT LONGI SPEED
1 1211678 06/08/2020 06:08 -254.454.135 -544.047.225 15
2 1211678 06/08/2020 06:38 -25.445.364 -544.047.383 20
3 1211678 06/08/2020 07:08 -25.445.401 -54.404.762 0
4 1211678 06/08/2020 07:38 -254.454.135 -544.046.878 0
5 1211678 06/08/2020 08:08 -254.454.255 -544.046.828 10
6 1211678 06/08/2020 08:38 -254.453.996 -54.404.707 25
7 1211678 06/08/2020 09:08 -25.445.428 -544.047.445 45
8 1211678 06/08/2020 09:38 -254.454.583 -544.048.415 0
所需结果集
ROWNUM ID_VEIC DAT_POSI LAT LONGI SPEED
1 1211678 06/08/2020 06:08 -254.454.135 -544.047.225 15
2 1211678 06/08/2020 06:38 -25.445.364 -544.047.383 20
3 1211678 06/08/2020 07:38 -254.454.135 -544.046.878 0
4 1211678 06/08/2020 08:08 -254.454.255 -544.046.828 10
5 1211678 06/08/2020 08:38 -254.453.996 -54.404.707 25
6 1211678 06/08/2020 09:08 -25.445.428 -544.047.445 45
7 1211678 06/08/2020 09:38 -254.454.583 -544.048.415 0
第3行已被删除,仅显示以前的第4行。
你知道怎么做吗?
在“选择已使用”菜单下:
SELECT ID_VEIC,
DAT_POSI,
LAT,
LONGI,
SPEED,
GMT
FROM LITERAL_VIEW
WHERE ID_VEIC= 1211678
AND DAT_POSI BETWEEN SYSDATE - INTERVAL '2' HOUR AND SYSDATE
AND ROWNUM <= 999
ORDER BY ID_VEIC,
DAT_POSI;
1条答案
按热度按时间z9gpfhce1#
可以使用窗口函数筛选出
speed
是0
谁的“下一行”是0speed
也是:通过添加
where
子查询的子句。