从24小时(循环)条目列中计算温度的移动平均值?

时间:2014-12-17 15:59:35

标签: sql

我很惊讶这个问题以前似乎没有被问过,但如果是这样的话,我的相当详尽的搜索还没有发现它。

我在列中有一个简单的温度环缓冲区,我想从中计算平均值。

sql表看起来像这样(列名显示在顶行)......

uid Temp
1   70
2   70
3   70
4   70
5   70
6   69
7   69
8   69
9   69
10  69

每当我获得新的温度时,我想转移" Temp"在将最新值写入插槽' 10'之前列一行所以我可以得到列数据的平均值。

必须有一个简单的方法来做到这一点,我还没有想到。 : - (

2 个答案:

答案 0 :(得分:2)

你可以这样做:

delete from buffer where id = 1;

update buffer set id = id - 1;

insert into buffer(id, temp) values(10, @temp);

但是,我会保留所有温度值并使用另一种方法来获得10个单位的移动平均值。

答案 1 :(得分:0)

搞定了!!

-- shift column values up one row.
UPDATE [myTable] 
SET [temp] = (SELECT [temp]
                  FROM [myTable] AS s2
                  WHERE s2.[uid] = ([myTable].[uid] +1))
WHERE [uid] <= 9;

根据需要,这会将特定单元格向上移动一行。

它比我想象的要复杂得多,但这似乎完全符合我的需要。   [: - )}