Postgresql 包含每分钟数据的表中的每小时数据

Postgresql 包含每分钟数据的表中的每小时数据,postgresql,Postgresql,我在PostgreSQL数据库中有一个包含三列的表。这三列是时间戳、标记和值。在该表中,数据从SCADA服务器生成的日志文件中自动插入。我需要这个表中的每小时数据。(20:00:00,21:00:00) 我想从这里得到2019-06-06 06:00:00 07:00:00的准确数据。这张表每分钟都在更新,所以我不能把它写在哪里 期望的输出应该是这样的 时间戳标记值 2019-06-06 06:00:00x123 2019-06-06 06:00:00 y 456 2019-06-06 07:0

我在PostgreSQL数据库中有一个包含三列的表。这三列是
时间戳
标记
。在该表中,数据从SCADA服务器生成的日志文件中自动插入。我需要这个表中的每小时数据。(20:00:00,21:00:00)

我想从这里得到2019-06-06 06:00:00 07:00:00的准确数据。这张表每分钟都在更新,所以我不能把它写在哪里

期望的输出应该是这样的

时间戳标记值
2019-06-06 06:00:00x123
2019-06-06 06:00:00 y 456
2019-06-06 07:00:00X5645
2019-06-06 07:00:00 y 54654
...
.....
......
2019-06-09 07:00:00x5645
2019-06-09 07:00:00 y 54654

您可以先提取时间戳的小时部分,然后按小时对结果进行分组

SELECT date_part('hour',  timestamp) as hour, STRING_AGG(tag, ','), STRING_AGG(value, ',')
    FROM your_table
    GROUP BY hour;
各种方法可提取时间戳的不同部分


可用于组合不同行的值。

您可以先提取时间戳的小时部分,然后按小时对结果进行分组

SELECT date_part('hour',  timestamp) as hour, STRING_AGG(tag, ','), STRING_AGG(value, ',')
    FROM your_table
    GROUP BY hour;
各种方法可提取时间戳的不同部分


可以用于组合不同行的值。

似乎您只需要在整小时内记录的行

您可以使用一个简单的WHERE子句来实现这一点

select *
from the_table
where date_trunc('hour', "timestamp") = "timestamp";

date\u trunc
将时间戳值“截断”到给定的粒度。因此,分、秒和毫秒将被设置为零。

似乎您只需要在整小时内记录的行

您可以使用一个简单的WHERE子句来实现这一点

select *
from the_table
where date_trunc('hour', "timestamp") = "timestamp";

date\u trunc
将时间戳值“截断”到给定的粒度。因此,分、秒和毫秒将设置为零。

共享一些数据和预期的输出。否则,任何人都几乎不可能帮助你。分享一些数据和你期望的输出。我希望通过web应用程序从上述数据中获取不同间隔的数据,如5分钟、10分钟、15分钟(用户给定的两个时间间隔之间)等。我应该如何为此编写查询?我希望通过web应用程序从上述数据中获得不同间隔的数据,如5分钟、10分钟、15分钟(在用户给定的两个时间间隔之间)等。我应该如何为此编写查询?