我有一个包含列的表:
时间以毫秒为单位 价格
我想用它创建 OHLC(开盘价、最高价、最低价、收盘价)蜡烛。这基本上是对某个时间段(假设每 1 分钟)的所有价格进行分组,并选择它们的最小、最大以及第一个和最后一个价格。
到目前为止我已经创建了这个查询:
SELECT
MIN(price) as low,
MAX(price) as high,
FLOOR(timeInMilliseconds/(1000*60)) as open_time
FROM ticks
GROUP BY FLOOR(timeInMilliseconds/(1000*60))
Run Code Online (Sandbox Code Playgroud)
这可行,但问题是开盘价(第一个)和收盘价(最后一个)。
有没有办法让它们(有效地)进入同一个查询?
您需要找到每个时间段的最大和最小时间,然后将JOIN表提供给它们以获取price这些时间的值:
SELECT t1.price AS open,
m.high,
m.low,
t2.price as close,
open_time
FROM (SELECT MIN(timeInMilliseconds) AS min_time,
MAX(timeInMilliseconds) AS max_time,
MIN(price) as low,
MAX(price) as high,
FLOOR(timeInMilliseconds/(1000*60)) as open_time
FROM ticks
GROUP BY open_time) m
JOIN ticks t1 ON t1.timeInMilliseconds = min_time
JOIN ticks t2 ON t2.timeInMilliseconds = max_time
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |