【问题标题】:Extracting key from the value of json object in postgres从postgres中json对象的值中提取键
【发布时间】:2019-02-05 22:25:43
【问题描述】:

假设我在名为 test 的表的特定列中有一个 json 对象 {'key1':0.5,'key2':0.3,'key3':0.1}。我想返回最高值的键。为了获得最高值,在 postgres 中,我可以编写以下查询:

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

现在,它返回最大值。但我想要的是与最高价值相关的键。这在 postgres json 查询中可行吗?

【问题讨论】:

    标签: sql json postgresql


    【解决方案1】:

    您需要将所有键/值对提取为行。完成此操作后,这是一个 问题 - 尽管您正在查看所有行,但没有“组”。

    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

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多