У меня есть вопрос, который больше похож на способ найти идею, как решить мою проблему.
Итак, проблема:
Каждые 2 минуты я получаю новую строку на моем таблица с различной информацией. Это:
ID_VEIC - Vehicle ID
DT_POSI - Position date
LAT - latitude
LONGI - longitude
SPEED - car speed when positioning
GMT - Vehicle gmt.
Некоторые из этих положений идут со скоростью, равной нулю, что в моем случае означает, что автомобиль остановлен. Если есть несколько положений остановленного транспортного средства (скорость = 0), я должен выбрать только последнее положение остановки между двумя положениями движения.
Объяснение с изображениями:
Таблица img
На изображении выбраны две строки, где скорость равна 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;