【发布时间】:2019-09-03 01:39:10
【问题描述】:
我有一个 psql 数据库,其中每分钟更新大约数千个键值的结果。出于报告目的,我需要在全时准确的每小时结果,即 9:00、10:00) 等。我的数据是这样的:
timestamp tag value
2019-06-06 06:00:00 x 123
2019-06-06 06:00:00 y 456
2019-06-06 06:01:00 x 123
2019-06-06 06:01:00 y 656
2019-06-06 06:02:00 x 123
2019-06-06 06:02:00 y 333
.......
.......
2019-06-06 06:59:00 x 2232
2019-06-06 06:59:00 y 654
2019-06-06 07:00:00 x 5645
2019-06-06 07:00:00 y 54654
并得到如下结果:,
timestamp tag value
2019-06-06 06:00:00 x 123
2019-06-06 06:00:00 y 456
2019-06-06 07:00:00 x 5645
2019-06-06 07:00:00 y 54654
...
.....
......
2019-06-09 07:00:00 x 5645
2019-06-09 07:00:00 y 54654
我使用了以下代码:
select *
from test
where date_trunc('hour', "timestamp") = "timestamp";
但是根据上面的查询结果,会给出整点的准确时间。但有时,其中一些密钥并没有像这样在整个小时内准确更新:
timestamp tag value
2019-06-06 05:59:00 x 123
2019-06-06 05:59:00 y 456
2019-06-06 06:01:00 x 123
2019-06-06 06:01:00 y 656
在上述情况下,我将在 6:00:00 得到空结果。
我想要在上述情况下自动传递最后一个值的查询,即 05:59:00 的值。
【问题讨论】:
标签: sql postgresql