我有以下数据架构
-- 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 聚合函数调用不能嵌套使用 jsonb_agg 函数
但这对我也不起作用,或者我错过了一些东西。
查询帮助将不胜感激,
编辑// 提供了一个带有示例数据的数据库小提琴和一个工作结果,其中不包括每个传感器的检查点。