2016-01-20 63 views
1

我有一个带有示例外汇的表格,其中包含一分钟的小节引号。如何选择行的第一个和最后一个值,并在5分钟间隔之间

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" 

是否有可能创建SELECT语句,这将是返回5分钟间隔报价。我的意思是它应该在每5分钟的时间间隔内选择5行,并返回第一行的open_rate,最后一行的close_rate以及high_rate和low_rate的最小值和最大值。 有没有可能?怎么做。

我所知道的是如何选择两个日期之间的最小值和最大值。

回答

1

获得五分钟的间隔是有点痛苦。一种方法是转换为秒,然后除以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); 
+0

它工作的很好,非常感谢! – WIESIEK

相关问题