8. Enkla SQL-övningar

Använd tabellen nyc_census_blocks för att besvara följande frågor (titta inte på svaren!).

Här är lite användbar information för att komma igång. Minns från avsnittet Om våra data vår tabelldefinition nyc_census_blocks.

blkid

En 15-siffrig kod som unikt identifierar varje block i en folkräkning. (”360050001009000”)

popn_total

Totalt antal personer i folkbokföringsblocket

popn_white

Antal personer som identifierar sig som ”vita” i kvarteret

popn_black

Antal personer som identifierar sig som ”svarta” i kvarteret

popn_nativ

Antal personer som identifierar sig som ”native american” i kvarteret

popn_asian

Antal personer som identifierar sig som ”asiater” i blocket

popn_other

Antal personer som identifierar sig med andra kategorier i blocket

hous_total

Antal bostadsenheter i kvarteret

hous_own

Antal ägarbebodda bostadsenheter i kvarteret

hous_rent

Antal hyresgäster som bor i bostadshus i kvarteret

boroname

Namn på stadsdel i New York. Manhattan, Bronx, Brooklyn, Staten Island, Queens

geom

Polygongräns för blocket

Och här är några vanliga SQL-aggregeringsfunktioner som du kan ha nytta av:

  • avg() - genomsnittet (medelvärdet) av värdena i en uppsättning poster

  • sum() - summan av värdena i en uppsättning poster

  • count() - antalet poster i en uppsättning poster

Nu kommer frågorna:

  • Hur många poster finns i tabellen nyc_streets?

    SELECT Count(*)
    FROM nyc_streets;
    
    19091
    
  • Hur många gator i NYC börjar med ”B”?

    SELECT Count(*)
      FROM nyc_streets
      WHERE name LIKE 'B%';
    
    1282
    
  • Vad är befolkningen i staden New York?

    SELECT Sum(popn_total) AS population
      FROM nyc_census_blocks;
    
    8175032
    

    Observera

    Vad är detta ”alias”? Du kan ge en tabell eller en kolumn ett annat namn genom att använda ett alias. Alias kan göra frågor enklare att både skriva och läsa. Så istället för att skriva ut kolumnnamnet sum skriver vi det AS som det mer läsbara population.

  • Vad är befolkningen i Bronx?

    SELECT Sum(popn_total) AS population
      FROM nyc_census_blocks
      WHERE boroname = 'The Bronx';
    
    1385108
    
  • Hur många ”neighborhoods” finns det i varje stadsdel?

    SELECT boroname, count(*)
      FROM nyc_neighborhoods
      GROUP BY boroname;
    
       boroname    | count
    ---------------+-------
     Queens        |    30
     Brooklyn      |    23
     Staten Island |    24
     The Bronx     |    24
     Manhattan     |    28
    
  • För varje stadsdel, hur stor andel av befolkningen är vit?

    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. Funktionslista

avg (uttryck): PostgreSQL-aggregatfunktion som returnerar medelvärdet för en numerisk kolumn.

count(uttryck): PostgreSQL-aggregeringsfunktion som returnerar antalet poster i en uppsättning poster.

sum(uttryck): PostgreSQL-aggregeringsfunktion som returnerar summan av poster i en uppsättning poster.