Извлечение ключа из значения объекта json в postgres - PullRequest
0 голосов
/ 31 августа 2018

Допустим, у меня есть объект json {'key1':0.5,'key2':0.3,'key3':0.1} в определенном столбце таблицы с именем test. Я хочу вернуть ключ самого высокого значения. Чтобы получить наибольшее значение, в postgres я могу написать этот запрос:

select greatest(column1->'key1',column1->'key2',column1->'key3') from test

Теперь он возвращает наибольшее значение. Но тот, который я хочу, - это ключ, связанный с наибольшим значением. Возможно ли это в запросах Postgres Json?

1 Ответ

0 голосов
/ 31 августа 2018

Вам нужно извлечь все пары ключ / значение в виде строк. Как только вы это сделаете, это проблема - без «группы», хотя вы просматриваете все строки.

select k,val
from (
  select t.*, row_number() over (order by t.val::numeric desc) as rn
  from jsonb_each_text('{"key1":0.5,"key2":0.3,"key3":0.1}'::jsonb) as t(k,val)
) t
where rn = 1;

Онлайн пример: http://rextester.com/OLBM23414

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...