Извлечение ключа из значения объекта json в postgres
62
7
Скажем, у меня есть json-объект {'key1':0.5,'key2':0.3,'key3':0.1}
в определенном столбце таблицы, называемой test. Я хочу вернуть ключ самого высокого значения. Чтобы получить максимальное значение, в postgres я могу написать этот запрос:
select greatest(column1->'key1',column1->'key2',column1->'key3') from test
Теперь он возвращает наибольшее значение. Но тот, который я хочу, - это ключ, связанный с самым высоким значением. Возможно ли это в postgres json-запросе?
спросил(а)
2021-01-19T14:04:39+03:00
2 месяца, 3 недели назад
добавить комментарий
пожаловаться
Решение
106
Вам нужно извлечь все пары ключ/значение в виде строк. Как только вы это сделали, это проблема greatest-n-per-group - без "группы", хотя вы смотрите на все строки.
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
ответил(а)
2021-01-19T14:04:39+03:00
2 месяца, 3 недели назад
добавить комментарий
пожаловаться
Ваш ответ
- Вопросы
- Postgresql
- Извлечение ключа из значения объекта json в postgres