让我们说我在名为test的表的特定列中有一个json对象{'key1':0.5,'key2':0.3,'key3':0.1}
。我想返回最高值的键。为了获得最高的价值,在postgres中,我可以编写以下查询:
select greatest(column1->'key1',column1->'key2',column1->'key3') from test
现在,它返回最大值。但是我想要的是与最高价值相关的钥匙。在postgres json查询中有可能吗?
答案 0 :(得分:0)
您需要将所有键/值对提取为行。完成此操作后,这将是一个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;