における間隔Iは、加速度計データを持つテーブル「cardoor」を持っている:0.4秒で平均値を計算する。 mysqlの
Time | dx | dy
=====================================
1464684066.38 | -2.090 | -0.570
1464684066.45 | -2.150 | -0.670
1464684066.48 | -2.090 | -0.650
私は「タイムから0.4秒間隔を使用して「DX」と「DY」の平均値を取得しようとしています'列。
これまで私はこの間隔でデータを取得していましたが、それは私のためには機能しません。遅すぎます(2百万行のテーブルで30分待っていました)。
最後の0.4秒の平均値である2列avg(dx)とavg(dy)を追加する必要があります。
SELECT b.Time, AVG(dx), AVG(dy)
FROM cardoor b LEFT JOIN cardoor p
ON p.Time BETWEEN b.Time-0.4 AND b.Time
GROUP BY b.Time
より適切な場合は、MySQL以外の提案を検討してください。
正確にどのタイプの平均値を取得しようとしていますか?クエリでは200万エントリの平均値が得られます(平均値は0.4秒以内です)。これは、2百万レコードと2百万レコードを比較する必要があることを意味します。 2百万レコードを0.4秒ブロックに分割し、その平均値を取って2百万レコードに満たないレコードに戻したい場合は、おそらく大幅にスピードを上げることができます。 – PaulF
私は次のクエリを試しました:[コード] from_unixtime(ROUND(Time /(60 * 0.00666))* 60 * 0.00666)* 60 * 0.00666)を選択してください。rounded_time from auto.cardoor1 rounded_time [/ code] 1秒間の平均結果。 (したがって、1秒未満では動作しません)。そして、私は'20/01/2016 18:54:44 'のような形式になっていましたが、実際にはUnix形式が必要です。 –
これは正しく動作しました:_SELECT round( 'time'/0.4)* 0.4 Time1 、AVG(dx)、AVG(dy)FROMタイムグループGROUP BY Time1;期待される結果数の平均。 – PaulF