0

我是 SQL 新手,试图学习如何对时间序列数据进行读取查询。有人可以给我一个关于如何将间隔时间序列数据重新采样为 postgres 读取查询的每小时平均值的提示吗?

我的表被命名building_data,其中有几列名为time, metric, value, kv_tags, m_tags

time是我的日期/时间戳列,我试图查看是否可以将value列中的数据重新采样为每小时平均值。下面WHERE的查询是为了过滤掉我有兴趣查看数据的特定设备。如果这没有意义,我很抱歉。

对于第一个计时器,此 sql 查询似乎可以工作,但它没有包含一些以每小时平均值重新采样数据的过程,非常感谢任何提示。

SELECT
  "time" AS "time",
  metric AS metric,
  value,
  kv_tags,
  m_tags
FROM building_data
WHERE kv_tags->'equip_name' = '["35201"]' AND 
  m_tags IS NOT NULL
ORDER BY time desc limit 1000
4

1 回答 1

0

您可以使用提取功能:

select 
  extract (hour from "time") "hour"
  , "time"::date "day"
   , Avg(value)
from building_data
WHERE kv_tags->'equip_name' = '["35201"]' 
AND m_tags IS NOT NULL
group by 
     "time"::date
     ,extract (hour from "time")
ORDER BY 
   "time"::date desc
   , extract (hour from "time") desc
limit 1000
于 2021-05-10T16:28:32.903 回答