【发布时间】:2021-06-05 03:54:19
【问题描述】:
数据表中存储的结构是:
| id | code | price | created_at |
|---|---|---|---|
| 1 | USDTBTC | 6.404203 | 1622781005 |
| 2 | USDTBTC | 6.404199 | 1622781065 |
| 3 | USDTBTC | 6.404202 | 1622781125 |
希望每1分钟、5分钟得到OHLC的数据,
select g,
COALESCE(MAX(p.price), 0) AS high,
COALESCE(MIN(p.price), 0) AS low
FROM generate_series(
date_trunc('minute', now() - '1 day'::interval),
date_trunc('minute', now()),
'5 minute'::interval
) as g
LEFT JOIN product_trend p
ON p.code = 'USDCNY' AND to_char(concat(to_char(TO_TIMESTAMP(created_at), 'YYYY-MM-DD HH24:MI'), ':',
FLOOR(date_part('minute', TO_TIMESTAMP(created_at)) / 5) * 5):: timestamp,
'YYYY-MM-DD HH24:MI') =
to_char(g, 'YYYY-MM-DD HH24:MI')
group by g
order by g;
我尝试使用generate_series,因为我担心会出现数据空白;但数据无法查询,请问如何查询?
【问题讨论】:
标签: sql postgresql