繁体   English   中英

Postgres按行分组查询结果

[英]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_objectjsonb_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM