gpt4 book ai didi

json - 如何通过 jsonḃ postgres 求和列组

转载 作者:行者123 更新时间:2023-11-29 13:44:10 24 4
gpt4 key购买 nike

您好,我有一个 jsnoḃ 列

proyectos:
nomḃre:character_varying
fecha:datetime
campos: jsonḃ

坎波斯的值(value)是=

{"lista": [{"valor": "10", "nombre": "sueldo"}, {"valor": "20", "nombre": "sueldo"}, {"valor": "25", "nombre": "sueldo"}]}

我运行此查询 ḃut 不工作

SELECT jsonb_array_elements(campos->'lista')->'nombre' as content,

sum(((jsonb_array_elements(campos->'lista')->'valor'))::numeric) as cantidad
FROM proyectos GROUP BY jsonb_array_elements(campos->'lista')->'nombre

控制台显示消息:

ERROR:  cannot cast type jsonb to numeric
LINE 3: ...((jsonb_array_elements(campos->'lista')->'valor'))::numeric)...
^
********** Error **********

ERROR: cannot cast type jsonb to numeric
SQL state: 42846
Character: 137

有什么想法吗?

最佳答案

在横向连接中使用函数jsonb_array_elements()获取数组元素作为value->>操作符获取json对象作为文本并将 valor 对象转换为数字。

select value->>'nombre' as nombre, sum((value->>'valor')::numeric)
from proyectos
cross join jsonb_array_elements(campos->'lista')
group by 1

nombre | sum
--------+-----
sueldo | 55
(1 row)

关于json - 如何通过 jsonḃ postgres 求和列组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51014156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com