Да, это можно сделать с помощью оконной функции lag()
:
select record_id, record_time,
record_time - lag(record_time) over (partition by record_id order by record_time) as diff_to_previous
from the_table
order by record_id, record_time;
Обратите внимание, что это вернет interval
, если вам нужно значение в минутах, вам нужно преобразовать это значение:
extract(epoch from record_time - lag(record_time) over (partition by record_id order by record_time)) / 60 as minutes