【发布时间】:2018-03-31 03:31:51
【问题描述】:
我正在尝试从 mysql 表中选择代表交易价格和市场量的蜡烛数据摘要。
该表包含 1 分钟蜡烛数据的数据。我想得到一个 5 分钟的摘要(基本上将其解释为 5 分钟的蜡烛)。
表格如下所示:
+--------+------+------+------+-------+--------+-------+
| market | open | high | low | close | volume | time |
+--------+------+------+------+-------+--------+-------+
| ABC | 13.6 | 15.4 | 11.2 | 14.1 | 299.4 | 11:59 |
| ABC | 14.1 | 16.8 | 12.5 | 15.3 | 342.2 | 12:00 |
| ABC | 15.3 | 16.3 | 11.2 | 14.2 | 351.5 | 12:01 |
| ABC | 14.2 | 15.5 | 12.3 | 13.2 | 374.2 | 12:02 |
| DEF | 93.7 | 94.3 | 90.7 | 93.2 | 1123.3 | 11:59 |
| DEF | 93.2 | 96.5 | 91.1 | 96.3 | 1232.8 | 12:00 |
| DEF | 96.3 | 98.2 | 95.3 | 95.4 | 1390.4 | 12:01 |
| DEF | 95.4 | 97.6 | 93.7 | 94.3 | 1360.9 | 12:02 |
+--------+------+------+------+-------+--------+-------+
我需要从该表中进行选择以生成代表更大时间范围的新蜡烛。例如,要表示 5 分钟蜡烛,我需要组合来自 5 个 1 分钟蜡烛的数据。
新蜡烛需要遵循以下规则
- open 列来自 first(candles[open])
- high 列来自 max(candles[high])
- low 列来自 min(candles[low])
- close 列来自最后一个(candles[close])
- volume 列来自 sum(candles[volume])
在这个例子中,我刚刚收集了 3 支最新的蜡烛
+--------+------+------+------+-------+--------+-------+
| market | open | high | low | close | volume | time |
+--------+------+------+------+-------+--------+-------+
| ABC | 14.1 | 16.8 | 11.2 | 13.2 | 1067.9 | 12:00 |
| DEF | 93.2 | 98.2 | 91.1 | 94.3 | 3984.1 | 12:00 |
+--------+------+------+------+-------+--------+-------+
目前为止
SELECT
market,
MAX(high) AS 'high',
MIN(low) AS 'low',
SUM(volume) AS 'volume'
FROM
candles
WHERE
time > (UNIX_TIMESTAMP() - 300)
GROUP BY
market
忽略打开和关闭列时,这可以正常工作。我无法弄清楚如何在此查询中包含打开和关闭列。我尝试过使用子查询,但没有成功。
【问题讨论】:
标签: mysql stock-data