【发布时间】:2018-04-14 20:18:15
【问题描述】:
我有一个包含时间相关信息的数据库。我想要一个包含每分钟值的列表。像这样:
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
我想用之前的 NOT NULL 值填充 NULL 值。
此查询为每分钟创建一个时间序列。然后它将它加入到我的数据库中的数据中。
我阅读了一些关于窗口函数的内容,以用之前的 NOT 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
【问题讨论】:
标签: sql postgresql