如何按 jsonḃ postgres 求和列组
how sum column group by jsonḃ postgres
您好,我有一个 jsnoḃ 列具有此值
proyectos:
nomḃre:character_varying
fecha:datetime
campos: jsonḃ
坎波斯的价值是=
{"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)
您好,我有一个 jsnoḃ 列具有此值
proyectos:
nomḃre:character_varying
fecha:datetime
campos: jsonḃ
坎波斯的价值是=
{"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)