简体   繁体   English

如何从json字段获取每个子字段SUM

[英]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.

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