這是我在 pgSQL 中的 json 列,我需要使用 pgSQL 將所有“總和”金額相加。
所以查詢應該使用下面的資料回傳“50”。
'{
"1": {
"sum": 5,
},
"2": {
"sum": 10,
},
"2728": {
"sum": 30,
},
"2729": {
"sum": 5,
}
}'
我確實找到了這樣的東西(Get aggregate sum of json array in Postgres NOSQL json data),如果我在陣列中有我的值,它有點作業,但我沒有,所以這給了我一個錯誤。
WITH x AS( SELECT
'{
"1": {
"sum": 5,
},
"2": {
"sum": 10,
},
"2728": {
"sum": 30,
},
"2729": {
"sum": 1410,
}
}'::json as y),
sums AS(
SELECT json_array_elements(y->'2729') as j FROM x)
SELECT sum((j->>'sum')::int) FROM sums;
uj5u.com熱心網友回復:
因為您的JSON值是嵌套物件,我們可以嘗試使用jsonb_each_text函式來獲取之前包含sum欄位SUM的所有嵌套物件。
WITH x AS( SELECT
'{
"1": {
"sum": 5
},
"2": {
"sum": 10
},
"2728": {
"sum": 30
},
"2729": {
"sum": 5
}
}'::jsonB as y)
SELECT SUM((v.value::jsonb->'sum')::INT)
FROM x
CROSS JOIN LATERAL jsonb_each_text(x.y) v
sqlfiddle
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486971.html
標籤:sql json PostgreSQL
下一篇:兩個COUNT問題的語法?
