我有一张表格,其中包含示异常(exception)汇一分钟条形报价。
id,quote_name,quote_date,quote_time,open_rate,close_rate,high_rate,low_rate
"1417","EURUSD","2015-01-01","13:01:00","1.2096","1.2096","1.2097","1.2096"
"1418","EURUSD","2015-01-01","13:02:00","1.2097","1.2096","1.2097","1.2096"
"1419","EURUSD","2015-01-01","13:04:00","1.2096","1.2098","1.2101","1.2096"
"1420","EURUSD","2015-01-01","13:05:00","1.2099","1.2099","1.2099","1.2099"
是否可以创建将返回 5 分钟间隔报价的 select 语句。我的意思是它应该在每 5 分钟间隔之间选择 5 行,并从第一行返回 open_rate,从最后一个报价返回 close_rate,以及 high_rate 和 low_rate 的最小值和最大值。 有可能吗?怎么做。
我所知道的是如何在两个日期之间选择最小值和最大值。
最佳答案
获得五分钟的间隔有点痛苦。一种方法是转换为秒并除以 300。然后,获取第一个和最后一个也是棘手的。在这种情况下,我会建议使用 substring_index()
和 group_concat()
的技巧:
select quote_date, min(open_time) as open_time,
substring_index(group_concat(open_rate order by quote_time), ',', 1) as first_open,
substring_index(group_concat(close_rate order by quote_time desc), ',', 1) as last_close,
min(high_rate), max(high_rate),
min(low_rate), max(low_rate)
from quotes
group by quote_date, floor(to_seconds(quote_time) / 300);
关于mysql - 如何选择行的第一个和最后一个值以及 5 分钟间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34906133/