Currently i'm having a dataset (jsonb) like this:
create table tbl(timebucket time, data jsonb);
insert into tbl values
('18:18:00',
'[
{"id1":
{
"energySensor": { "value": 2 }
}
},
{"id1":
{
"energySensor": { "value": 4 }
}
},
{"id2":
{
"energySensor": { "value": 2 }
}
},
{"id2":
{
"energySensor": { "value": 2 }
}
},
{"id3":
{
"energySensor": { "value": 2 }
}
},
{"id3":
{
"energySensor": { "value": 2 }
}
}
]'
),
('18:20:00',
'[
{"id1":
{
"energySensor": { "value": 2 }
}
},
{"id1":
{
"energySensor": { "value": 4 }
}
},
{"id2":
{
"energySensor": { "value": 2 }
}
},
{"id2":
{
"energySensor": { "value": 2 }
}
},
{"id3":
{
"energySensor": { "value": 2 }
}
},
{"id3":
{
"energySensor": { "value": 2 }
}
}
]'
)
The id's are actually UUID-s and are represented as machines in this context.
I'm also using timescaleDB extension to use a timebucket.
In this example I use data with interval of "2 minutes". This returns 2 sensor readings for each machine in a minute.
What i would like to get now is to query this data via postgresql that it would return the machine with its average for the "energySensor" value.
The final result should be something like this =>
[{
"timebucket": "18:18:00",
"data": {
"id1": {
"energySensor": { "value": 3 }
},
"id2": {
"energySensor": { "value": 2 }
},
"id3": {
"energySensor": { "value": 2 }
},
}
},
{
"timebucket": "18:20:00",
"data": {
"id1": {
"energySensor": { "value": 3 }
},
"id2": {
"energySensor": { "value": 2 }
},
"id3": {
"energySensor": { "value": 2 }
},
}
}]
I currently have no good solution as to do this..