Как выполнить порядок по пределу 1 внутри ячейки jsonb в postgres? - PullRequest
0 голосов
/ 28 октября 2018

У меня есть таблица в postgres

CREATE TABLE my_table (
    id serial primary key,
    col_1 jsonb,

    ....

Внутри col_1, у меня есть такая структура

[{"date": "2018-10-13", "val_1": 90.8, "val_2": 87.9},
 {"date": "2018-10-03", "val_1": 90.2, "val_2": 83.2},
 {"date": "2018-10-11", "val_1": 92.8, "val_2": 88.9},
 ...
]

Теперь мне нужно запросить что-то вроде этого

SELECT "latest date from the jsonb" WHERE id = {some_id};

Чтобы сделать это, я должен иметь возможность упорядочить / отсортировать массив в col_1 по дате в порядке убывания (сначала преобразовать строку даты с помощью функции to_date), а затем получить первый элемент этогоотсортированный массив.Как я могу сделать это в postgres?

1 Ответ

0 голосов
/ 28 октября 2018

С помощью функции jsonb_array_elements():

select (jsonb_array_elements(col_1)->>'date')::date as date
from my_table
where id = 1
order by date desc
limit 1

    date    
------------
 2018-10-13
(1 row)
вы можете удалить массив json
...