我需要计算 SQL Server 中数据负载的移动范围(至少我认为这就是所谓的)。如果我可以使用数组,这会很容易,但我知道这对于 MS SQL 是不可能的,所以想知道是否有人有建议。
为了让您了解我需要什么:
假设我在 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
编辑:可能值得注意的是,您没有将这些平方用于移动平均 - 我错了
然后总结它们:
4+1+16+9=30
然后除以值的数量:
30/5=6
然后平方根这个:
2.5(ish)
编辑:因为您不是在对它们进行平方,所以您也不是在对它们进行平方
如果有人能帮助我完成第一步,那就太好了 - 我可以自己完成剩下的工作。
需要考虑的其他一些事项:
- 在 SQL Server 中使用存储过程
- 有相当多的数据(100 或 1000 个值),需要每天或每周计算一次
提前谢谢了。
~鲍勃
最佳答案
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
关于sql-server - 在 SQL Server 中计算移动范围(无数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1554985/