首页 > 解决方案 > 将从一张表计算的平均总分存储到另一张表中

问题描述

很容易,我敢肯定,但我仍然刚刚开始使用 SQL。如何将平均值存储到 tblAccounts?这是我到目前为止所拥有的..

@playerAccountID uniqueidentifier,

UPDATE tblAccounts 
SET overallScore = ( 
   SELECT (  SUM(dart1)/COUNT(dart1) 
           + SUM(dart2)/COUNT(dart1)  
           + SUM(dart3)/COUNT(dart1) ) / 3
FROM tblScores
INNER JOIN tblAccounts.accountID 
   ON tblScores.accountID
WHERE @playerAccountID = playerAccountID
) 
WHERE @playerAccountID = accountID

tblScores 存储每次投掷飞镖的分数。我需要所有 3 次飞镖的平均值,所以如果 dart1 = 40, dart2 = 60, dart3 = 20 那么平均值是 40。但是这个表中会有多行,我需要存储在 tblAccounts 中的是所有平均值的平均值。例如:

30 40 20 = 30
40 40 40 = 40
15 15 15 = 45

我从这个例子中需要的结果是 (30+40+45)/3 因为有 3 行但行数会有所不同。

标签: sql

解决方案


如果我理解正确,您只需要相关子查询中的算术:

UPDATE tblAccounts
    SET overallScore = (SELECT (s.dart1 + s.dart2 + s.dart3) / 3
                        FROM tblScores s
                        WHERE s.playerAccountID = tblAccounts.playerAccountID                       
                       ) 
WHERE accountID = @playerAccountID;

推荐阅读