8. 简单SQL练习¶
使用``nyc_census_blocks`` 表,回答以下问题(不要偷看答案!)。
这是一些有用的信息,可以帮助你入门。回想一下,在:ref:`关于我们的数据<about_data>`部分,我们有``nyc_census_blocks``表的定义。
blkid |
一个15位的代码,唯一标识每个人口普查**区块**。例如:360050001009000 |
popn_total |
人口普查区块中的总人口数 |
popn_white |
在该区块中自我识别为“白人”的人数 |
popn_black |
该街区中自称为“黑人”的人数 |
popn_nativ |
街区中自认为“美洲原住民”的人数 |
popn_asian |
该街区中自称“亚洲人”的人数 |
popn_other |
在该区域自我认同为其他类别的人数 |
hous_total |
在这个街区中的住房单位数量 |
hous_own |
该街区中的自住住房单位数量 |
hous_rent |
该街区中的租赁住房单位数量 |
boroname |
纽约市的行政区名称分别是:曼哈顿、布朗克斯、布鲁克林、史泰登岛和皇后区。 |
geom |
街区的多边形边界 |
以下是一些常见的SQL聚合函数,您可能会发现它们很有用:
avg() - 一组记录中值的平均值(均值)
sum() - 一组记录中值的总和
count() - 一组记录中的记录数量
现在的问题是:
nyc_streets表中有多少条记录?
SELECT Count(*) FROM nyc_streets;
19091
纽约市有多少条街道以'B'开头?
SELECT Count(*) FROM nyc_streets WHERE name LIKE 'B%';
1282
纽约市的人口是多少?
SELECT Sum(popn_total) AS population FROM nyc_census_blocks;
8175032
注解
这个``AS``是什么?通过使用别名,您可以给表或列指定另一个名称。别名可以使查询更容易编写和阅读。因此,我们将输出的列名``sum``写成更可读的别名``population``。
Bronx的人口是多少?
SELECT Sum(popn_total) AS population FROM nyc_census_blocks WHERE boroname = 'The Bronx';
1385108
每个行政区有多少个“社区”?
SELECT boroname, count(*) FROM nyc_neighborhoods GROUP BY boroname;
boroname | count ---------------+------- Queens | 30 Brooklyn | 23 Staten Island | 24 The Bronx | 24 Manhattan | 28
每个行政区的白人人口占总人口的百分比是多少?
SELECT boroname, 100.0 * Sum(popn_white)/Sum(popn_total) AS white_pct FROM nyc_census_blocks GROUP BY boroname;
boroname | white_pct ---------------+------------------ Brooklyn | 42.8011737932687 Manhattan | 57.4493039480463 The Bronx | 27.9037446899448 Queens | 39.722077394591 Staten Island | 72.8942034860154
8.1. 函数列表¶
avg(expression): 返回数值列的平均值的PostgreSQL聚合函数。
count(expression): 返回一组记录中记录数量的PostgreSQL聚合函数。
sum(expression): PostgreSQL 聚合函数,返回一组记录中的记录总和。