PostgreSQL缺失时段数据回填:分钟窗口统计及数据补全需求
PostgreSQL时间窗口回填与聚合查询需求
我有一张包含Id、Value、date_time三列的PostgreSQL表,需要实现以下查询逻辑:
- 计算指定起止时间内每个1分钟窗口的最小值、最大值、窗口首个值和窗口末值
- 若起始时间点无对应数据,用起始时间之前的最后一条数据进行回填
- 任何缺失的1分钟窗口,均使用上一个窗口的最后值回填
示例数据
Id date_time Value 1 10:10:05 3 1 10:11:06 4 1 10:13:13 5 1 10:13:19 9 1 10:13:32 8 1 10:14:35 2
窗口聚合期望结果(查询时段:10:12:00 至 10:14:00)
10:12:00-10:13:00窗口
start value = 4 (回填自之前的最后一条数据) end value = 4 min value = 4 max value = 4 minute start = 10:12:00 minute end = 10:13:00
10:13:00-10:14:00窗口
start value = 4 (回填自之前的最后一条数据) end value = 8 min value = 4 max value = 9 minute start = 10:13:00 minute end = 10:14:00
核心要求:所有缺失窗口必须用上一窗口的最后值回填。
请问是否存在能实现该需求的SQL查询?如果上述查询过于复杂,能否先实现一个简化版查询:
获取指定起止时间内的数据,若起始时间无对应数据,自动回填起始时间之前的最后一条数据,确保起始时间必有对应值。
简化查询期望结果(查询时段:10:12:00 至 10:14:00)
Id date_time Value 1 10:12:00 4 (回填自之前的最后一条数据) 1 10:13:13 5 1 10:13:19 9 1 10:13:32 8
后续逻辑将通过代码实现。
内容的提问来源于stack exchange,提问作者Dashing Boy
相关产品推荐
相关产品推荐

