使用:Access 2003
我有一个包含至少250个数据条目的表。我的目标是找到一些列的平均值(例如TotalNumSuverys列的平均值)。一个简单的数学方程如SUM /(测量数量)不会起作用,因为根据具体的列,条目总数不同。
如何获得色谱柱的平均值?
(我在查询视图中尝试了“平均”聚合,发现它平均了行而不是列。)
是否有任何SQL允许执行类似“ForEach循环”的操作?
- 我很陌生,抱歉!
答案 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