[英]Postgres grouping query result by row
我是 Postgres 的新手,现在第一次使用 nodejs。 我有一张带有传感器读数的表格(在这种情况下为温度)。 该表类似于:
传感器ID | 时间戳 | 温度 |
---|---|---|
1 | 晚上 8 点 22 分 | 22C |
2 | 晚上 8 点 23 分 | 21C |
3 | 晚上 8 点 25 分 | 24℃ |
2 | 晚上 8 点 26 分 | 27℃ |
2 | 晚上 8 点 28 分 | 19C |
1 | 晚上 8 点 31 分 | 28℃ |
有没有一种方法可以创建一个查询来获取 nodejs 的数据,格式如下:
[
{sensorID: 1,
data: [
{timestamp:8:22pm, temperature:22C},
{timestamp:8:31pm, temperature:28C}
]},
{sensorID: 2,
data: [
{timestamp:8:23pm, temperature:21C},
{timestamp:8:26pm, temperature:27C},
{timestamp:8:28pm, temperature:19C}
]},
{sensorID: 3,
data: [
{timestamp:8:25pm, temperature:24C}
]}
]
欢迎来到 SO。
要在 PostgreSQL 中构建和聚合 json 对象(通过 SQL),您可以使用函数jsonb_build_object
和jsonb_agg
:
WITH j AS (
SELECT
sensorid,
jsonb_build_object(
'data',
jsonb_agg(
jsonb_build_object(
'timestamp',timestamp,
'temperature',temperature)))
FROM t
GROUP BY sensorid
ORDER BY sensorid)
SELECT jsonb_agg(j) FROM j;
演示: db<>fiddle
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.