3

我还是 sql 新手,我刚刚使用 postgresql 一个星期。我有点卡住了。。

我正在使用纽约数据集(http://workshops.opengeo.org/postgis-intro/about_data.html)。

我必须找到一种方法来列出所有亚洲人口比相应行政区平均数更多的社区,并且我必须显示亚洲人口的百分比。

我想过这个:

select name, 100 * sum(c.popn_asian)/(select (avg(popn_asian)) from nyc_census_blocks group by boroname)
from nyc_neighborhoods n, nyc_census_blocks c
where (ST_Contains(n.geom, c.geom) = true )
and (sum(c.popn_asian)) > (select avg(popn_white) from nyc_census_blocks c1 group by c1.boroname) 

但是我显然不会在 where 子句之后使用 sum ...我想知道为什么并学习如何解决这个问题。

谢谢

4

2 回答 2

5
select name, 100 * sum(c.popn_asian)/(select (avg(popn_asian)) from nyc_census_blocks group by boroname)
from nyc_neighborhoods n, nyc_census_blocks c
where ST_Contains(n.geom, c.geom) = true 
group by name
having sum(c.popn_asian) > (select avg(popn_white) from nyc_census_blocks c1 group by c1.boroname) 
于 2012-11-05T18:31:58.823 回答
1

您需要having针对此问题使用该子句。

于 2012-11-05T18:30:12.720 回答