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聚合函数。