如何选择行的第一个和最后一个值 之间间隔为5分钟

Posted Little_Rookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何选择行的第一个和最后一个值 之间间隔为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 从第一行中,从上次的报价和 min 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);

 

翻译来自: http://stackoverflow.com/questions/34906133/how-to-select-first-and-last-value-of-rows-and-between-5-minutes-interval

以上是关于如何选择行的第一个和最后一个值 之间间隔为5分钟的主要内容,如果未能解决你的问题,请参考以下文章

当值与 SQL Server 中的最后一条记录之间存在特定差距时如何选择值

如何选择和计算每个唯一行的最常见的第一个值?

如何选择第一次输入,然后仅间隔大于 5 分钟

选择表中每分钟的第一个值

什么是 SQL 查询以 5 分钟间隔选择数据和数据条目的 AVG

如何跟踪仓库员工扫描的 5 分钟间隔?