2017-03-22 18 views
0

内のデータを渡っ:選択は、私は以下のようにテーブルを持っているSQL

id  int(20) 
ip  varchar(25) 
temp float 
batt int(4) 
date datetime 

この表は、15秒ごとにデータを収集し、テーブルを埋めるセンサから供給されます。

1 fe80::212:4b00:60d:b27f 17.62 3256 2017-03-20 01:58:31 
2 fe80::212:4b00:60d:6215 19.524 3264 2017-03-20 01:58:43 
3 fe80::212:4b00:60d:b27f 17.62 3256 2017-03-20 01:58:46 
4 fe80::212:4b00:60d:6215 19.524 3263 2017-03-20 01:58:58 
5 fe80::212:4b00:60d:b27f 17.62 3256 2017-03-20 01:59:01 

私はセンサー(ip)によって平均気温(temp)を取得したいと時間によって(date

次のような出力:方法について

  IP    00:00 01:00 02:00 ... 
fe80::212:4b00:60d:b27f 18.16 18.20 18.23 ... 
fe80::212:4b00:60d:6215 19.54 20.12 20.30 ... 

任意のアイデアmysqlでクロスデータ出力を取得しますか?

答えて

3

あなたは条件付きの集約を使用し行うことができます。

select ip, 
     avg(case when hour(date) = 00 then temp end) as temp_00, 
     avg(case when hour(date) = 01 then temp end) as temp_01, 
     avg(case when hour(date) = 02 then temp end) as temp_02, 
     . . . 
from t 
where date >= '2017-03-20' and 
     date < '2017-03-21' 
group by ip; 
+0

が速すぎます。スピーディーゴードンサレス:) –

+0

いつものように、ゴードンはパンチに私を打ち負かす... – JohnHC

+0

多くのおかげであなたはSQLウィザード、それは魅力のように動作します! ;) – Will

関連する問題