2012-03-12 33 views
2

私は5分のビンにデータを含むmysqlデータベースを持っています。私は半時間で開始するデータの時間平均を作成したいと思います。 2時00分に1時、発言から平均値を計算します半時間で始まる間隔でMysqlの時間平均

select date,AVG(AE) from mytable group by date(date),HOUR(date);  

:ビルトイングループでMySQLを使用することにより 。代わりに、毎時平均を00:30から01:30に計算し、その値は01:00に毎時平均となります。

新しい日が始まるときに、このクエリは失敗:私は別のポストでは:-)

得ている最も近い

select date, AVG(AE) from mytable group by date(date), HOUR(date) + FLOOR(MINUTE(date)/30); 
+---------------------+------------------+ 
| date    | AVG(AE)   | 
+---------------------+------------------+ 
| 1997-01-01 22:30:00 |    23 | 
| 1997-01-01 23:30:00 |    28.3 | 
| 1997-01-02 00:00:00 | 20.1333333333333 | 
| 1997-01-02 00:30:00 |    29.3 | 
| 1997-01-02 01:30:00 | 27.5666666666667 | 
| 1997-01-02 02:30:00 | 43.4166666666667 | 

https://stackoverflow.com/a/6560742/1142735)は、それが示唆されたFLOOR BY GROUP(MOD ((mytimestamp-1800)/ 3600))は、タイムスタンプが使用された場合、30分後に開始する間隔を作成します。私はdatetimeを使用しています。

おかげ

ポール

+0

右、ので、あなたのdatetime値が式にタイムスタンプ形式に変換.... – Alnitak

答えて

1

DATE()機能が正しくグループ間隔23:30 - 00:30に失敗します使用しています何か。

用途:

FLOOR((UNIX_TIMESTAMP(date) - 1800)/3600) 
+0

あなたの速いです!作品は完璧です。ありがとう – Paulten