【发布时间】:2016-05-23 21:16:16
【问题描述】:
我在 Access 中有一个相关的子查询,它为每个被评估的人获取运行总评分。我想知道如何插入一个计数器来跟踪将多少记录添加到运行总数中,以便我可以使用它通过计算运行总数/计数来计算每个人的平均评分。对于一个更有经验的人来说,这可能非常简单,但我还没有设法让它工作,并且可以使用任何可用的帮助来加快我在这个过程中的速度。到目前为止,这是我的代码:
SELECT FieldEval1.EvaluateeID, FieldEval1.EvalDate, FieldEval1.EvalSkillVal, FieldEval1.EvalSkillVal,
(SELECT Sum(FieldEval2.EvalSkillVal)
FROM FieldEvaluations AS FieldEval2
WHERE FieldEval2.EvaluateeID = FieldEval1.EvaluateeID AND FieldEval2.EvalDate <= FieldEval1.EvalDate) AS SkillTotal
FROM FieldEvaluations AS FieldEval1;
到目前为止,我正在努力为每个人创建运行总计。
【问题讨论】:
-
请先检查语法,子查询前缺少逗号。
-
我希望能够设置计算记录的参数。进行评估的人(我的老板)允许输入 1-5 或留空 - 零值表示他们将其留空。如果添加到运行总计中的值为零,则意味着没有对一个人进行评估,因此我不想在计算平均值时计算该记录。也许我可以以某种方式指定子查询 Avg(EvalSkillVal) 的参数来完成同样的事情?
-
感谢您的帮助。自从我的办公室关门并把我赶出去后,我必须在早上再次拿起这个。我觉得答案非常接近,明天会更新。 ??????
-
@HansUp - 这是我在您的帮助头脑风暴后想出的代码(它似乎有效)。 SELECT FieldEval1.EvaluateeID, FieldEval1.EvalDate, FieldEval1.EvalSkillVal, (SELECT Avg(FieldEval2.EvalSkillVal) FROM FieldEvaluations AS FieldEval2 WHERE ((FieldEval2.EvalSkillVal)>0) AND FieldEval2.EvaluateeID = FieldEval1.EvaluateeID AND FieldEval2.EvalDate 0));
-
我不知道如何发布示例数据,但如果您有兴趣,我可以尝试弄清楚,以便您查看原始数据与结果的比较。
标签: sql ms-access counter correlated-subquery cumulative-sum