在 PostgreSql 中,我在檔案中找不到一個函式可以讓我組合 n 個 json 物體,同時在存在鍵/值對的情況下對值部分求和
英語不是我的主要語言,我懷疑我不知道如何使用正確的術語進行搜索
換句話說
來自 2 列的表格
name data
'didier' {'vinyl': 2, 'cd': 3)
'Anne' {'cd' : 1, 'tape' : 4}
'Pierre' {'cd' : 1, 'tape': 9, 'mp3':2}
我想產生以下結果:
{ 'vinyl' : 2, 'cd' : 5, 'tape':13, mp3 : 2}
With 是一個“組合和求和”函式
提前感謝您的任何想法
迪迪埃
uj5u.com熱心網友回復:
使用the_tableCTE 進行說明,首先“標準化”data列,然后對每個專案型別 (k) 求和,最后聚合為 JSONB 物件。
with the_table("name", data) as
(
values
('didier', '{"vinyl": 2, "cd": 3}'::jsonb),
('Anne', '{"cd" : 1, "tape" : 4}'),
('Pierre', '{"cd" : 1, "tape": 9, "mp3":2}')
)
select jsonb_object_agg(k, v) from
(
select lat.k, sum((lat.v)::integer) v
from the_table
cross join lateral jsonb_each(data) as lat(k, v)
group by lat.k
) t;
-- {"cd": 5, "mp3": 2, "tape": 13, "vinyl": 2}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361558.html
標籤:json PostgreSQL的
下一篇:SQL欄位型別是否區分大小寫
