mysql - 如何选择行的第一个和最后一个值以及 5 分钟间隔

标签 mysql sql

我有一张表格,其中包含示异常(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/

相关文章:

mysql - Django-MySQL 无法识别额外查询集中的 model.column?

c# - 我的 Webforms 数据存储在哪里?

mysql - 如何重写jpql自定义查询中给定的查询?

mysql - SQL 计算多列

sql - 选择 current_user 的组名

sql - 多次插入 XML 数据

mysql - mysql似乎忽略了外键约束

php - MySQL PHP 选择日期范围内的行数

sql - 如何更改主键以在 ORACLE 中设置默认值 DEFAULT SYS_GUID()

SQL - 将 2 个外键左连接到 1 个主键