2012-02-27 105 views
1

使用: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

回答

2

Avg()函數僅給出列中非空值的平均值(算術平均值)。或者,在您的示例中,將從「SUM」和「survery採訪者數量」中排除空值。

訪問的查詢設計器可能會引起混淆(最好我記得)。也許會更有意義給你,如果你使用這種模式切換到SQL視圖,然後鍵入一個例子聲明...

SELECT Avg(MyColumn) AS AvgOfMyColumn 
FROM MyTable; 

...替代MyColumn的列名,併爲您的MyTable的表名。然後運行查詢(數據表視圖)以查看它提供了什麼。然後,您可以切換回設計視圖以查看它在那裏的顯示方式。

其他集合函數,不僅僅是Avg(),也忽略空值。例如,Count(MyColumn)會爲您提供MyColumn不爲空的行數。 [如果您想要統計所有行,而不管任何單個列是否包含空值,請使用Count(*)]並且Sum(MyColumn)將僅添加非空MyColumn值。

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