最後に、次のmysqlクエリで問題を解決しました。
select min(a.mydate),max(a.myhigh) as high,min(a.mylow) as low,
min(case when rn_asc = 1 then a.myopen end) as open,
min(case when rn_desc = 1 then b.myclose end) as close
from(
select
@i := if((@lastdate) != (Floor(unix_timestamp(mydate)/300 )), 1, @i + 1) as rn_asc,
mydate, myhigh, mylow, myopen, myclose,
@lastdate := (Floor(unix_timestamp(mydate)/300 ))
from
onemindata_1,
(select @i := 0) vt1,
(select @lastdate := null) vt2 order by mydate
) a
inner join(
select
@j := if((@lastdate1) != (Floor(unix_timestamp(mydate)/300 )), 1, @j + 1) as rn_desc,
mydate,myclose,
@lastdate1 := (Floor(unix_timestamp(mydate)/300 ))
from
onemindata_1,
(select @j := 0) vt1,
(select @lastdate1 := null) vt2 order by mydate desc
)b
on a.mydate=b.mydate
group by (Floor(unix_timestamp(a.mydate)/300 ))
最も困難な部分は、「特定の時間間隔」のオープンとクローズを取得することでした。「date」に「close」を使用して「high、low、open」の内部結合を実行しています。(Floor(unix_timestamp(mydate)/ 300))の分母を変更することで、時間間隔を切り替えることができます。現在、動作している限り、パフォーマンスについては心配していません:)。