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äsbarapopulation
.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.