我可以在 select 语句中用动态键对 Postgresql 中的 jsonb 数组求和吗?
Can I sum an array of jsonb in Postgresql with dynamic keys in a select statement?
我在 postgres 中有一个 jsonb 对象:
[{"a": 1, "b":5}, {"a":2, "c":3}]
我想获得每个唯一键的总和:
{"a":3, "b":5, "c":3}
密钥不可预测。
是否可以使用 select 语句在 Postgres 中执行此操作?
查询:
SELECT key, SUM(value::INTEGER)
FROM (
SELECT (JSONB_EACH_TEXT(j)).*
FROM JSONB_ARRAY_ELEMENTS('[{"a": 1, "b":5}, {"a":2, "c":3}]') j
) j
GROUP BY key
ORDER BY key;
结果:
| key | sum |
| --- | --- |
| a | 3 |
| b | 5 |
| c | 3 |
我在 postgres 中有一个 jsonb 对象:
[{"a": 1, "b":5}, {"a":2, "c":3}]
我想获得每个唯一键的总和:
{"a":3, "b":5, "c":3}
密钥不可预测。
是否可以使用 select 语句在 Postgres 中执行此操作?
查询:
SELECT key, SUM(value::INTEGER)
FROM (
SELECT (JSONB_EACH_TEXT(j)).*
FROM JSONB_ARRAY_ELEMENTS('[{"a": 1, "b":5}, {"a":2, "c":3}]') j
) j
GROUP BY key
ORDER BY key;
结果:
| key | sum |
| --- | --- |
| a | 3 |
| b | 5 |
| c | 3 |