2015-11-16 28 views
0

我有一個包含表(表1):如何計算sql查詢訪問中所有子縣的每個縣的平均人口數?

Sub_county_name, 
county_name, 
total_pop(for each sub county) 

我想要做一個查詢,給我的平均人口在所有子縣每個縣,最好不加入。

我已經試過:

SELECT Sub_county_name,county_name,total_pop 
FROM table1 
WHERE total_pop = (SELECT (SUM(total_pop)/COUNT(county_name)) 
        FROM table1 a 
        WHERE a.county_name = table1.county_name); 

這可是隻運行給了我兩個條目(有100個縣)。

我能知道我做錯了什麼嗎?

+0

我認爲您的查詢只適用於擁有單個分縣的縣。您需要將where子句中的內容移動到select部分中,因爲您想要檢索該值,而不是按它進行過濾。 – Turophile

回答

0

1)只使用一個組而不是一個連接。

2)您可以使用內置的avg()函數來獲取平均值(平均值)。

select county_name, avg(total_pop) from table1 group by county_name 
0

你只需要在縣名上做一個聚合,所以你會忽略sub_county_name。它看起來是這樣的:

SELECT county_name,Avg(total_pop)AS average_pop FROM Table1 GROUP BY縣名;

希望有幫助!

+0

我可以使用相同的代碼來計算總體的方差嗎?如果是,使用Var或VarP更好嗎? – Sophie

+0

Var和VarP是域函數,它們與聚合函數有點不同。 Var和VarP不能用作聚合(好吧,我不知道這肯定取決於Access的版本),所以你必須使用域功能。 Var返回字段的樣本方差,VarP返回字段的總體偏差。 –