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