我有一个包含与时间相关信息的数据库。我想要列举出每分钟的值清单,如下所示:
12:00:00 3
12:01:00 4
12:02:00 5
12:03:00 5
12:04:00 5
12:05:00 3
但是当没有数据几分钟后,我得到了这样的结果:
12:00:00 3
12:01:00 4
12:02:00 5
12:03:00 NULL
12:04:00 NULL
12:05:00 3
我希望用前一个非空值来填充NULL值。
这个查询为每一分钟创建一个时间序列。然后将其与我的数据库中的数据连接起来。
我读到关于窗口函数用前一个非空值来填充NULL值的内容,但是我无法想出如何在这个查询中实现。有人能指导我一下吗?
我尝试了这个解决方案,但是NULL值仍然存在:PostgreSQL use value from previous row if missing
这是我的查询:
SELECT
date,
close
FROM generate_series(
'2017-11-01 09:00'::timestamp,
'2017-11-01 23:59'::timestamp,
'1 minute') AS date
LEFT OUTER JOIN
(SELECT
date_trunc('minute', market_summary."timestamp") as day,
LAST(current, timestamp) AS close
FROM market_summary
WHERE created_at >= '2017-11-01 09:00'
AND created_at < '2017-11-01 23:59'
GROUP BY day
) results
ON (date = results.day)
ORDER BY date
first_value(close) over (partition by grp_close order by date) as corrected_close
- Bryan_D