【问题标题】:Adding Counter to Correlated Subquery向相关子查询添加计数器
【发布时间】: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


【解决方案1】:

在得到其他人的帮助以澄清我的问题以及我需要获得什么结果后,我想出了以下代码:

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 <= FieldEval1.EvalDate) AS SkillAvg 
FROM FieldEvaluations AS FieldEval1 
WHERE (((FieldEval1.EvalSkillVal)>0));

此代码将为我提供每个人的平均评分,同时忽略存在零值的记录(零表示未对该类别中的该人进行评分)。

【讨论】:

    【解决方案2】:

    我不会用子查询作为列来编写我的 SQL。使用连接通常更清晰(和 IIRC,标准)。 Here's an example 有解释。

    一旦您使用该表格进行了小于比较和 GROUP BY,运行总计开始看起来非常简单。

    【讨论】:

    • 感谢您分享此信息。我将研究它一段时间,因为现在它看起来很吓人;希望在我花更多时间查看之后它更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多