【发布时间】:2018-10-19 12:58:32
【问题描述】:
我有以下数据架构
-- table
master
- id (int)
- meta (jsonb)
- key (string)
-- table
details
- master_id (int)
- timestamp (timestamp)
- value (float)
(简体)
以下查询因以下错误而终止:
select json_build_object(
'name',m.meta->>'name',
'keys',json_agg(
json_build_object(
'key',m.key,
'checkpoints',json_agg(
json_build_object(
'time',d.timestamp,
'value',d.value)
)
)
)
)
from master m, details d
GROUP by m.meta->>'name',m.key,d.timestamp,d.value
ERROR: aggregate function calls cannot be nested
LINE 6: 'checkpoints',json_agg(
我想得到以下结构。
[
{"name":"name",
"keys":[
{"key":"mykey",
"checkpoints":[
{"time":"timestamp","value":"1.2"},...]
},...]
}...
]
我知道这个错误是可以理解的,我不能使用嵌套的json_agg。但我不知道如何解决它。
此答案建议使用内联查询:PostgreSQL aggregate function calls cannot be nested using jsonb_agg function
但这对我也不起作用,或者我遗漏了一些东西。
感谢您对查询的帮助,
编辑// 提供了一个包含示例数据和工作结果的数据库小提琴,其中不包括每个传感器的检查点。
【问题讨论】:
-
你能用一些示例数据创建一个 db fiddle 表吗?
-
@eurotrash 添加了 db fiddle
标签: postgresql postgresql-9.6 postgresql-json