2016-11-03 17 views
0

私は10秒ごとにデータで更新されるテーブルを持っています。私は、特定の日付のために24時間、10分間の平均を得る必要があります。MySQLは平均24時間10分

私はこれをやってみて、PHPで10分増やしてみました。

select AVG(active_energy), date_time from energy_readings where date_time between "2016-11-02 00:00:00" and "2016-11-02 00:00:00"+ INTERVAL 10 MINUTE; 

24時間、次いで

select AVG(active_energy), date_time from energy_readings where date_time between "2016-11-02 00:10:00" and "2016-11-02 00:10:00"+ INTERVAL 10 MINUTE; 

これは動作しますが、データベースサーバーに負荷がかかりすぎます。

特定の日に24時間平均10分を与える単一のmysqlクエリがありますか?ここで

答えて

1

データの10分ごとの行を取得するための一つの方法である:

select date(date_time), hour(date_time), floor(minute(date_time)/6), 
     avg(active_energy) 
from energy_readings 
where date_time >= '2016-11-02' and datetime < '2016-11-03' 
group by date(date_time), hour(date_time), floor(minute(date_time)/6) 
order by min(date_time); 
+0

「TRUNC」は、残念ながらMySQLでは利用できません。代わりに日付(分(date_time)/ 6)を使用しようとしました。しかし、これはうまくいきませんでした。 – NoMadic

+1

このように 'DIV'演算子を使うことができると思います。' ... group by date(date_time)、hour(date_time)、minute(date_time)DIV 6 ... ' @NoMadic – 1000111

+1

@NoMadic。 。 。おっとっと。正しい関数は 'floor()'です。 –