2009-10-12 60 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