2009-10-12 59 views
7

我有一個要求來計算SQL Server中數據負載的移動範圍(至少我認爲這是它所稱的)。如果我可以使用數組,那麼這很容易,但我知道這對於MS SQL來說是不可能的,所以想知道是否有人有建議。在SQL Server中計算移動範圍(不包含數組)

爲了給你什麼,我需要一個想法:

可以說我有一個SQL Server表如下:

1 
3 
2 
6 
3 

我需要得到這些數字的差異(以順序),即:

|1-3|=2 
|3-2|=1 
|6-2|=4 
|3-6|=3 

然後正方形這些:

2^2=4 
1^2=1 
4^2=16 
3^2=9 

編輯:可能是值得關注,你不SQUARE而且,這些移動平均 - 我錯了

然後總結他們:

4+1+16+9=30 

然後通過值的數目除以

30/5=6 

然後平方根這個:

2.5(ish) 

編輯:因爲你ARENT平方他們,你ARENT SQROOTING他們要麼

如果任何人都可以只幫助我走出第一步,這將是巨大的 - 我可以做其他自己。

一些其他的事情要考慮:
- 使用SQL Server存儲過程
- 有相當大量的數據(100S或值的1000),他們將需要每天或每週來計算方法爲

非常感謝提前。

〜鮑勃

+0

一個很好的問題。我想我會把我今天的博客貼出來。 – Quassnoi 2009-10-12 15:14:08

回答

7
WITH nums AS 
     (
     SELECT num, ROW_NUMBER() OVER (ORDER BY id) AS rn 
     FROM mytable 
     ) 
SELECT SQRT(AVG(POWER(tp.num - tf.num, 2))) 
FROM nums tp 
JOIN nums tf 
ON  tf.rn = tp.rn + 1