问题描述
我正在尝试在最近两个小时内为每个唯一的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"}
解决方法
您可以使用distinct on
:
select distinct on (data) t.*
from t
order by data,time desc;
,
使用distinct on
和json访问器:
select distinct on (data ->> 'id') t.*
from mytable t
order by data ->> 'id',time desc