Создание запроса для поиска новейших строк за последние два часа с уникальным идентификатором

Я пытаюсь выбрать все самые новые строки (на основе столбца Time) для каждого уникального Data-››Id за последние два часа. Столбец данных — это столбец json, к которому должен обращаться оператор стрелки.

Id        Time                    Data
1      2020-08-13 18:13:14       {'Id': "1"}
2      2020-08-13 18:14:12       {'Id': "2"}
3      2020-08-13 18:14:19       {'Id': "1"}
4      2020-08-13 17:13:21       {'Id': "2"}
5      2020-08-13 18:23:54       {'Id': "1"}
6      2020-08-13 13:13:21       {'Id': "2"}

Результат должен быть примерно таким, с текущим временем 2020-08-13 18:15:00.

Id        Time                    Data
1      2020-08-13 18:13:14       {'Id': "1"}
4      2020-08-13 17:13:21       {'Id': "2"}

person Jakobo06    schedule 13.08.2020    source источник


Ответы (2)


Используйте distinct on и аксессор json:

select distinct on (data ->> 'id') t.*
from mytable t
order by data ->> 'id', time desc
person GMB    schedule 13.08.2020

Вы можете использовать distinct on:

select distinct on (data) t.*
from t
order by data, time desc;
person Gordon Linoff    schedule 13.08.2020