我有从模板制作的对象。这些对象上有几个数据点,我测量每个零件上的每个数据点,以查看零件离模板有多远。我想进行最近的 100 次测量并找到它们的平均值和标准偏差。以下是我的表值的详细信息:
- reqt_id:每个不同的reqt_id代表对象上的一个数据点
- var:每个 var 是一个测量值。
- inst_id:每个新的测量值(var)都有一个 inst_id,所以这用于找出哪些测量值是最新的
所以总而言之,如果我的零件有 5 个不同的数据点要测量,我将有 5 个不同的 reqt_id。如果我有 500 个要测量的零件,则每个 reqt_id 将有 500 个 var 测量值。我想要对我的 SQL 存储过程做的是编写一个游标,它将从某个 reqt_id 中获取最近的 100 个 var 测量值,然后获取它的 AVG 和 STDEV,然后移动到下一个。理想情况下,我的表格将如下所示:
..REQT_ID..|..AVG..|..STDDEV..
..0001........|..0.32..|..0.0012....
..0002........|..0.27..|..0.0005....
以下是我到目前为止的光标。到目前为止它不起作用,所以我想知道我到底错过了什么。
DECLARE cursor_reqt_ids CURSOR FOR
SELECT r.reqt_id, AVG(r.[var]), STDEV(r.[var])
FROM RESULTS r
DECLARE @reqt_id AS INT
OPEN cursor_reqt_ids
FETCH NEXT FROM cursor_reqt_ids INTO @reqt_id
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT TOP 100 r.[var]
FROM RESULTS r
WHERE r.[var] != 0
ORDER BY r.inst_id DESC
END
CLOSE cursor_reqt_ids
DEALLOCATE cursor_reqt_ids