AFJ,
давайте предположим, что у нас есть новое поле, которое сообщает нам, существует ли предварительная запись для этой части в предыдущие 5 минут, а затем, взяв строки, для которых в этом поле установлено значение False, мы получили результат.
select
Part,
DateTime,
coalesce(
(select distinct 1
from data ds
where ds.Part = d.Part
and ds.DateTime between d.DateTime and d.DateTime - 5/1440
)
, 0) as exists_previous
from data d
Подзапрос проверяет, являются ли они строкой с одинаковой деталью в предыдущие 5 минут с интервалом
Результат должен быть:
Part DateTime exists_previous
123 12:00:00 0
123 12:00:05 1
123 12:00:06 1
456 12:10:23 0
789 12:12:13 0
123 12:14:32 0
теперь, фильтр, чтобы получить только строки с 0:
select Part, DateTime from
(select
Part,
DateTime,
coalesce(
(select distinct 1
from data ds
where ds.Part = d.Part
and ds.DateTime between d.DateTime and d.DateTime - 5/1440
)
, 0) as exists_previous
from data D
) T where T.exists_previous = 0
Отказ от ответственности: не тестировалось.