0
我有一個表MySQL的平均
datetime (every 15 mins) | value
我怎麼能顯示
select avg(value_15mins_before, value, value_15mins_after)
我有一個表MySQL的平均
datetime (every 15 mins) | value
我怎麼能顯示
select avg(value_15mins_before, value, value_15mins_after)
的平均價值,我建議你把一個自動遞增的ID在表中。使用時間戳時,事情可能會有一秒之差,這可能會導致問題。
下面將爲你身邊的每一個點的移動平均:
select (value + coalesce(tprev.value, 0.0) + coalesce(tnext.value, 0.0))/
((case when value is not null then 1.0 else 0.0 end) +
(case when tprev.value is not null then 1.0 else 0.0 end) +
(case when tnext.value is not null then 1.0 else 0.0 end)
) as moving_avg
from (select t.*,
(select max(t2.dt) from t t2 where t2.dt < t.dt) as dt_prev,
(select min(t2.dt) from t t2 where t2.dt > t.dt) as dt_next
from t
) t left outer join
t tprev
on t.dt_prev = tprev.dt_prev left outer join
t tnext
on t.dt_next = tnext.dt_next
它假定有數據沒有「洞」。你可以通過在dt_prev和dt_next的subquerys中加入約束來解決這個問題。 。 。例如,只考慮在給定值的20分鐘內的時間值。
這也假定value
不爲空。
這對我來說毫無意義。你只是想增加/分15分鐘到'價值'?請提供更多信息。 – Kermit
請張貼一些樣本數據和預期結果。 – Taryn