【发布时间】:2018-12-30 05:01:07
【问题描述】:
我这里有以下数据集
http://sqlfiddle.com/#!17/70f9a/1
我想创建一个查询,结果如下:
这个想法只是以不同的方式重新呈现值 cols avg_time_1 和 avg_time_2(jsonb 值)
【问题讨论】:
标签: postgresql aggregate-functions jsonb postgres-9.6
我这里有以下数据集
http://sqlfiddle.com/#!17/70f9a/1
我想创建一个查询,结果如下:
这个想法只是以不同的方式重新呈现值 cols avg_time_1 和 avg_time_2(jsonb 值)
【问题讨论】:
标签: postgresql aggregate-functions jsonb postgres-9.6
使用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)
【讨论】: