[英]How to get each subfield SUM from json field
I have a next table in PostgreSQL. 我在PostgreSQL中有一张桌子。 How I can get SUM for each sub fields of
result
json-field? 如何获取
result
json-field的每个子字段的SUM?
┌────┬───────────┬────────────────────────────────────┐
│ id │ parent_id | result │
├────┼───────────┼────────────────────────────────────┤
│ 1 │ 1 | {"step_1":1,"step_2":2,"step_3":3} │
│ 2 │ 1 | {"step_1":5,"step_4":10} │
│ 3 │ 1 | {"step_2":10,"step_3":30} │
│ 4 │ 2 | {"step_1":1,"step_6":50} │
└────┴───────────┴────────────────────────────────────┘
I need result like this: 我需要这样的结果:
┌───────────┬──────────────────────────────────────────────────┐
│ parent_id | result │
├───────────┼──────────────────────────────────────────────────┤
│ 1 | {"step_1":6,"step_2":12,"step_3":33,"step_4":10} │
│ 2 | {"step_1":1,"step_6":50} │
└───────────┴──────────────────────────────────────────────────┘
In PostgreSQL 9.4+: 在PostgreSQL 9.4+中:
SELECT parent, JSON_OBJECT_AGG(key, value)
FROM (
SELECT parent, key, SUM(value::INT) AS value
FROM mytable
CROSS JOIN
LATERAL JSON_EACH_TEXT(result)
GROUP BY
parent, key
) q
GROUP BY
parent
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.