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

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

问题描述:

使用:Access 2003如何查找Access 2003中某个列的平均值?

我有一个包含至少250个数据项的表。我的目标是找到一些列的平均值(例如TotalNumSuverys列的平均值)。像SUM /(survery takers的数量)这样一个简单的数学公式将不起作用,因为取决于具体的列,条目的总数是不同的。

如何才能达到列的平均值?

(我已经尝试了“平均”聚集在查询查看,发现其平均的行而不是列。)

是否有任何SQL将允许做一些像“ForEach循环”?

- 我很新,对不起!

+1

'SELECT AVG(t.ANumber)AS AvgOfANumber 从表t'给出了列的平均, 一个号码。你想要什么?请包含示例数据。 – Fionnuala 2012-02-27 21:29:03

Avg()函数仅给出列中非空值的平均值(算术平均值)。或者,在您的示例中,将从“SUM”和“survery采访者数量”中排除空值。

访问的查询设计器可能会引起混淆(最好我记得)。也许会更有意义给你,如果你使用这种模式切换到SQL视图,然后键入一个例子声明...

SELECT Avg(MyColumn) AS AvgOfMyColumn 
FROM MyTable; 

...替代MyColumn的列名,并为您的MyTable的表名。然后运行查询(数据表视图)以查看它提供了什么。然后,您可以切换回设计视图以查看它在那里的显示方式。

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

如果由于某种原因,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