MySQL データベースに大量のデータがあるので、それを理解するために 10 分間隔で取り出したいと考えています。
からデータを取得できますが、lap_times
10分ごとにデータを引き出す方法がわからないため、基本的には以下を実行したいと考えています(//の後は疑似コードです)。
SHOW * FROM lap_times // WHERE time is between 1370880036 and 1370880636 ?
これを達成する方法はありますか?
SET @start_time = CONVERT('2013-06-10 12:15', datetime);
SELECT *
FROM lap_times
WHERE time BETWEEN @start_time and @start_time + INTERVAL 10 MIN;
間隔を「包括的」にするか「非包括的」にするかを決定する必要があります。
私にとっては、間隔を左側に「非包括的」、右側に「包括的」にすることは理にかなっています...次のようなものです:
set @t = 1370880636;
select *
from lap_times as lt
where lt.time > @t - 600 and lt.time <= @t;
間隔を両側で「包括的」にしたい場合は、次を使用できますbetween
。
set @t = 1370880636;
select *
from lap_times as lt
where lt.time between @t - 600 and @t;
任意のオフセットではなく、正時から始まる 10 分のブロックを受け入れることができる場合は、次のようなロジックを使用できます。
SELECT SUM(col) FROM lap_times GROUP BY time - (time % 600);
任意のオフセットは、上記の句を使用する前に、から減算して「丸められた」タイムスロットに戻すことで処理できます。time
GROUP BY