繁体   English   中英

汇总JSON值

[英]Summing JSON values

有什么办法让我从一列中读取json数据,并根据它们的键将这些值相加并排列它们。 该列的示例是:

id_column | json_data
1         | {"A": 1, "C": 4, "D": -2}
2         | {"B": 3, "S": 0, "A": 2, "D": 0}

我想要得到的最终结果应如下所示:

json_data
{"A": 3, "B": 3, "C": 4, "D": -2, "S": 0}

因此,最终结果实际上是每行中json数据的总和,而且键是从AZ排列的。

该方法如下:

SELECT json_object_agg(key, val ORDER BY key)
FROM (SELECT t.key,
             sum(CAST(t.val AS bigint)) AS val
      FROM j
         CROSS JOIN LATERAL jsonb_each_text(j.json_data)
                            AS t(key, val)
      GROUP BY t.key
     ) AS q;

                 json_object_agg                  
--------------------------------------------------
 { "A" : 3, "B" : 3, "C" : 4, "D" : -2, "S" : 0 }
(1 row)

jsonb没有顺序,因此我将json用于结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM