8. 単純なSQLの練習

nyc_census_blocks テーブルを使って、次の問に答えます (回答を覗かないで下さい!)。

始めるのに助けになる情報を示します。About Our Data セクションの nyc_census_blocks テーブル定義を思い出して下さい。

blkid

**block**を一意に識別する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
    
  • ニューヨーク市のストリート数はいくつでしょうか?

    SELECT Count(*)
      FROM nyc_streets
      WHERE name LIKE 'B%';
    
    1282
    
  • ニューヨーク市の人口はいくらでしょうか?

    SELECT Sum(popn_total) AS population
      FROM nyc_census_blocks;
    
    8175032
    

    注釈

    この"AS"とは何でしょう? テーブルまたはカラムに、エイリアスを使って他の名前を与えることができます。エイリアスは読み書きともにクエリを簡単にしてくれます。sum という出力カラム名の代わりに、カラム名が読みやすい population にするために AS を書きます。

  • ブロンクスの人口はいくらでしょうか?

    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 集約関数です。