sql - PostgreSQL JSON 对象总和
问题描述
我有一列包含这样的 json 数据:
{
"40593":[{"id":1,"amount":1}],
"40594":[{"id":1,"amount":1},{"id":2,"amount":1}]
}
我想根据给定 id 的 amount 属性计算总和。对于上面 id 1 的示例,我想得到 2。
解决方案
您可以枚举对象的键,取消嵌套数组,然后聚合:
select
(y.obj ->> 'id')::int id,
sum((y.obj ->> 'amount')::int) total_amount
from mytable t
cross join lateral jsonb_object_keys(t.mycol) x(attr)
cross join lateral jsonb_array_elements(t.mycol -> x.attr) as y(obj)
group by (y.obj ->> 'id')::int
order by id
编号 | 总金额 -: | ------------: 1 | 2 2 | 1
推荐阅读
- python - Python中的多元逻辑回归显示错误
- cython - 从 Cython 访问自定义属性
- r - R中的DocumentTermMatrix - 每行的唯一单词总和
- c# - Selenium Webdriver The system cannot find the file specified in visual studio 2017 错误
- python - numpy数组的Python字符串表示
- mysql - dplyr - 使用索引进行查询优化
- javascript - 只有在下午 1 点到 2 点之间才可以在网站背景上播放音频
- php - WP ACF Generate php – 在哪里以及如何放置代码?
- php - 天数计算未给出正确的天数
- scala - 如何使用 Spark 从 DBFS 目录加载和处理多个 csv 文件