簡體   English   中英

從多列創建 JSON 對象數組

[英]Creating array of JSON objects from multiple columns

我這里有以下數據集

ID 鑰匙 類別 avg_time_1 avg_time_2
1 1 10 10 20
2 1 20 30 40
3 2 10 10 50
4 2 20 60 70

Sqlfiddle。

我想創建一個查詢,結果如下:

鑰匙 avg_time_1 avg_time_1
1 [{“類別”:10,“平均時間”:10},{“類別”:20,“平均時間”:20}] [{“類別”:10,“平均時間”:20},{“類別”:20,“平均時間”:40}]
2 [{“類別”:10,“平均時間”:10},{“類別”:20,“平均時間”:60}] [{“類別”:10,“平均時間”:50},{“類別”:20,“平均時間”:70}]

這個想法只是以不同的方式將值 cols avg_time_1avg_time_2重新呈現為 jsonb 值。

使用jsonb_build_object()構建素數對象並使用jsonb_agg()將它們聚合成一個 json 數組:

select 
    key, 
    jsonb_agg(jsonb_build_object('category', category, 'avg_time', avg_time_1)) as avg_time_1,
    jsonb_agg(jsonb_build_object('category', category, 'avg_time', avg_time_2)) as avg_time_2
from data_to_agg_json
group by key

 key |                              avg_time_1                              |                              avg_time_2                              
-----+----------------------------------------------------------------------+----------------------------------------------------------------------
   1 | [{"avg_time": 10, "category": 10}, {"avg_time": 30, "category": 20}] | [{"avg_time": 20, "category": 10}, {"avg_time": 40, "category": 20}]
   2 | [{"avg_time": 10, "category": 10}, {"avg_time": 60, "category": 20}] | [{"avg_time": 50, "category": 10}, {"avg_time": 70, "category": 20}]
(2 rows)    

Db<>小提琴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM