[英]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 |
我想創建一個查詢,結果如下:
鑰匙 | 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_1
和avg_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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.