4

約70秒ごとにデータセットを取得する気象データベースがあります(気象観測所がデータを配信するタイミングによって異なります)。
Pchartを使用してグラフ化したいのですが、サンプルが多すぎるため、X軸がねじ込まれています。
だから私は約5分ごとのデータが欲しいです。(または30分ごと)
私が現在持っているクエリはこれです:

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()

これにより、過去24時間のサンプルが取得されますが、数が多すぎます。

4

2 に答える 2

9

以下は、タイムスタンプが:00、:05、:10..のデータで構成されるサンプルを取得します。

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
    AND mod(minute(time),5) = 0

モジュロ関数を使用して、時間の分の部分が(0または)5で割り切れるかどうかを確認しています。


時間セグメントごとに1つの結果のみが必要な場合は、かなり複雑にする必要があります。

SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5), 
       min(temp_out), avg(temp_out), max(temp_out) 
FROM wmr200 
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5

現在、MySQLインスタンスにアクセスしてテストすることはできませんが、ここにアイデアがあります。5分ごとに、日付、時間、およびでグループ化されますround(minute(time)/5,0)*5。これは、分を最も近い5に丸めます。

グループ化する時間の値と、min、avg、max temp_outを選択します。これは、これらのどれがあなたの状況に最も適しているかわからなかったためです。

ただし、DBに5分間のストレッチ(または、使用している場合は30分間のストレッチ)のデータがない場合でも、サンプルポイントのデータがない可能性があります。

于 2012-05-01T19:29:46.220 に答える
3

このページで他の誰かが起こった場合に備えて、Samに匹敵するソリューションを次に示します。Unixタイムスタンプと整数除算を使用して、任意の期間の値を「ビン」および平均化します。

SELECT FROM_UNIXTIME((UNIX_TIMESTAMP(time) div (5*60))*(5*60)+(5*60)) as timeIntervals,
round(avg(temp_out),3) as temp_out
FROM wmr200 
GROUP BY 1
于 2014-11-06T23:59:36.307 に答える