8. 简单 SQL 练习¶
使用 nyc_census_blocks
表,回答以下问题(不要偷看答案!)。
以下是一些帮助您入门的信息。回顾 关于我们的数据 部分中的 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
。布朗克斯的人口是多少?
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 聚合函数,返回记录集中记录的总和。