我希望你能给我指出正确的方向。
我正在尝试使用 SQL Server 2008 生成控制图 ( http://en.wikipedia.org/wiki/Control_chart )。创建基本控制图非常简单。我只计算平均值和标准偏差,然后绘制它们。
复杂的一点(至少对我而言)是我希望图表在识别到阶跃变化时重置均值和控制限。
目前我只对一种识别步进变化的非常简单的方法感兴趣,5 个点连续出现在平均值之上或之下。有更复杂的方法来识别它们 (http://en.wikipedia.org/wiki/Western_Electric_rules),但我只想先把它弄清楚。
我的流程是:
- 按月和年汇总和排序,应用行号。
- 计算总体平均值
- 识别每个数据项是高于、低于还是等于平均值,用 +1、-1 或 0 标记。
- 确定它们是高于或低于平均值的 5 个连续数据项(当前使用游标)。
- 如果 5 个点高于或 5 个点低于平均值,则重新计算平均值。
- 重复直到表格结束。
在 SQL Server 中可以进行这种处理吗?感觉我可能需要一个递归 UDF,但递归有点超出我的能力范围!
我们将不胜感激向正确方向的插入!
干杯
最佳答案
好吧,我最终只是使用 WHILE 循环进行迭代。我不会发布完整的代码,但步骤是:
设置用户定义的表数据类型,以便将数据传递到存储过程参数。
编写了附带的存储过程,该过程使用行号和 while 循环遍历输入表中的每个数据值,然后使用当前行号对输入数据的子集进行基于集合的处理(以检查是否以下 5 个点高于/低于平均值,并在触发此标志时重新计算平均值和标准差)。
输出包含原始值、行号、月份、平均值、控制上限和控制下限的表格。
我还启动并运行了一个基于完整 Nelson 规则的工作,并且还将说明数据失败的测试。
目前我只在进一步开发它时使用过它,因此我设置了一个带有一些 VBA 的 Excel 工作表来动态构建一个 SQL 字符串,并将其作为命令文本传递给数据透视表。这样,您就可以使用不同的数据集反复 ping USP,还可以更改一些其他有关程序运行方式的参数(例如调整控制限等)。
最终,我希望能够将生成的数据传递给我们正在处理的 Business Objects 报告和仪表板。
关于sql-server-2008 - SQL Server 2008 R2 中的统计过程控制图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699239/