首页 > 解决方案 > 如何使用 SQL 平均数天的每小时值

问题描述

我有一个带有每小时值的 SQL 表(postgreSQL/TimescaleDB),例如:

Timestamp               Value
...
2021-02-17 13:00:00     2
2021-02-17 14:00:00     4
...
2021-02-18 13:00:00     3
2021-02-18 14:00:00     3
...

我想在特定时间跨度内将每个小时的平均值映射到今天的日期,所以像这样:

select avg(value)
from table
where Timestamp between '2021-02-10' and '2021-02-20'
group by *hourpart of timestamp*

今天(2021-10-08)的结果应该是:

...
Timestamp               Value
2021-10-08 13:00:00     2.5
2021-10-08 14:00:00     3.5
...

如果我明天(2021-10-09)做同样的选择,结果应该变成:

...
Timestamp               Value
2021-10-09 13:00:00     2.5
2021-10-09 14:00:00     3.5
...

标签: postgresqltimescaledb

解决方案


我自己解决了这个问题: 解决方案:

SELECT EXTRACT(HOUR FROM table."Timestamp") as hour,
avg(table."Value") as average
from table
where Timestamp between '2021-02-10' and '2021-02-20'
group by hour
order by hour;

推荐阅读