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 是什麼?您可以使用別名來幫資料表或欄位取個其他名稱。別名可以讓查詢更容易寫作和閱讀。因此我們會寫出 population 這個比較容易閱讀的代稱,而不是輸出欄位名稱 sum

  • 布朗克斯的人口是多少?

    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 聚集函式,返回一組記錄中記錄的總和。