如何在Access 2003中查找某个列的平均值?

时间:2012-02-27 18:56:43

标签: ms-access average

使用:Access 2003

我有一个包含至少250个数据条目的表。我的目标是找到一些列的平均值(例如TotalNumSuverys列的平均值)。一个简单的数学方程如SUM /(测量数量)不会起作用,因为根据具体的列,条目总数不同。

如何获得色谱柱的平均值?

(我在查询视图中尝试了“平均”聚合,发现它平均了行而不是列。)

是否有任何SQL允许执行类似“ForEach循环”的操作?

- 我很陌生,抱歉!

2 个答案:

答案 0 :(得分:2)

Avg()函数只给出列中非空值的平均值(算术平均值)。或者,在您的示例中,Null值将从“SUM”和“Surived takers”中排除。

Access'查询设计器一开始可能会令人困惑(我记得最好)。如果您切换到SQL View并使用此模式键入示例语句,那么对您来说可能会更有意义......

SELECT Avg(MyColumn) AS AvgOfMyColumn
FROM MyTable;

...将您的列名替换为MyColumn,将您的表名替换为MyTable。然后运行查询(数据表视图)以查看它为您提供的内容。然后,您可以切换回设计视图以查看它在那里的呈现方式。

其他聚合函数(不仅仅是Avg())也会忽略Null值。例如,Count(MyColumn)将为您提供MyColumn不为空的行数。 [如果您想要计算所有行,无论任何单个列是否包含Null,请使用Count(*)]而Sum(MyColumn)将仅添加非空MyColumn值。

答案 1 :(得分:0)

如果由于某种原因Avg()不适合您,您可以使用基本方式:

Dim rSet As DAO.Recordset, cnt As Integer, sum As Integer, avg As Variant
rSet = CurrentDb.OpenRecordset ("Select Sum(MyColumn), Count(MyKey) from MyTable")
sum  = rSet.Fiels(0)
cnt  = rSet.Fiels(1)
avg = sum/cnt
MsgBox "The average is " & avg