gpt4 book ai didi

json - Postgresql - 对匹配键的 JSON 行求和

转载 作者:行者123 更新时间:2023-12-05 01:41:17 25 4
gpt4 key购买 nike

我的数据库中有两列,一个是 uid (myuid),另一个是表示每个用户的宠物总数 (totalpetsjson) 的键值对。我想查询 uid,然后对键匹配的结果 JSON 行求和。

这个查询

SELECT totalpetsjson FROM mytable WHERE "myuid" IN ('john','andy') 

两行结果

{'dogs':3,'cats':5,'fish':144}
{'dogs':2,'lizards':4,'cats':3'}

我想要的结果。我怎样才能查询和组合上面的两行,如下所示?

{'dogs':5,'cats':8,'fish':144,'lizards':4}

最佳答案

使用函数json_each_text()它给出对 (key, value),将 values 转换为整数,然后按 keys 将它们分组求和。最后将结果聚合成json:

select json_object_agg(key, sum)
from (
select key, sum(value::int)
from my_table
cross join json_each_text(totalpetsjson)
where myuid in ('john','andy')
group by key
) s

json_object_agg
---------------------------------------------------------
{ "fish" : 144, "lizards" : 4, "cats" : 8, "dogs" : 5 }
(1 row)

Live demo in rextester.

关于json - Postgresql - 对匹配键的 JSON 行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54774427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com