2016-04-27 14 views
1

私は、特定の日時範囲内に入り、その平均値を吐き出す値を取るべきクエリを書くことに取り組んでいます。しかし、私はいくつかの問題にぶち当たっています。特定の日付範囲に収まる平均値はありますか?

本質的に、30日以上にわたる複数の異なるデータサブセットを持つ大きなデータセットがあります。私は午前9時から午前9時までの2日間にわたる値を平均する方法を理解する必要があります。

私のデータセットの例:

Device1  Values  TimeFrame 
---------------------------------------------------------   
Device1  Value1  2016-03-27 00:03:11.000 0.0019 
Device1  Value2  2016-03-27 00:03:11.000 18.7041 
Device1  Value3  2016-03-27 00:03:11.000 49.5902 
Device1  Value1  2016-03-27 00:08:06.000 0.0019 
Device1  Value2  2016-03-27 00:08:06.000 18.7041 
Device1  Value3  2016-03-27 00:08:06.000 49.5902 
Device1  Value1  2016-03-27 00:13:09.000 0.0019 
Device1  Value2  2016-03-27 00:13:09.000 18.7041 
Device1  Value3  2016-03-27 00:13:09.000 49.5902 
Device1  Value1  2016-03-28 00:03:11.000 0.0019 
Device1  Value2  2016-03-28 00:03:11.000 18.7041 
Device1  Value3  2016-03-28 00:03:11.000 49.5902 
Device1  Value1  2016-03-28 00:08:06.000 0.0019 
Device1  Value2  2016-03-28 00:08:06.000 18.7041 
Device1  Value3  2016-03-28 00:08:06.000 49.5902 
Device1  Value1  2016-03-28 00:13:09.000 0.0019 
Device1  Value2  2016-03-28 00:13:09.000 18.7041 
Device1  Value3  2016-03-28 00:13:09.000 49.5902 

私は、しかし、日が午前9時から始まり、翌日午前9時で終了と仮定して、日ごとに各値の平均値を計算する必要があります。ちょっと怪しいです。私はどこから始めるべきかについてはあまりよく分かりません。

答えて

4

あなたはgroup byを9時間を減算して使用することによってこれを行うことができます。

select cast(dateadd(hour, -9, timeframe) as date) as thedate, 
     count(*) as num, avg(value) as avg_value 
from dataset t 
group by cast(dateadd(hour, -9, timeframe) as date) 
order by thedate; 
関連する問題