Насколько показано в ваших данных образца, значения dict являются действительными json строками. Я бы предложил преобразовать их в объект jsonb; затем вы можете использовать jsonb_object_keys()
для извлечения ключей, их сортировки и получения значения, соответствующего наибольшему ключу:
select z.ts, (t.dict::jsonb) ->> z.ts val
from t
cross join lateral (
select ts
from jsonb_object_keys(t.dict::jsonb) x(ts)
order by ts desc
limit 1
) z
Демонстрация на DB Fiddle :
with t as (select '{"2018-08-12T00:00:00": 88888.8, "2018-08-12T15:00:00": 88888.8, "2018-08-12T03:00:00": 88888.8, "2018-08-12T12:00:00": 88888.8, "2018-08-12T21:00:00": 88888.8, "2018-08-12T18:00:00": 88888.8, "2018-08-12T06:00:00": 88888.8, "2018-08-12T09:00:00": 88888.8}' dict)
select z.ts, (t.dict::jsonb) ->> z.ts val
from t
cross join lateral (
select ts
from jsonb_object_keys(t.dict::jsonb) x(ts)
order by ts desc
limit 1
) z
ts | val
:------------------ | :------
2018-08-12T21:00:00 | 88888.8