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
Скільки вулиць у Нью-Йорку починаються на літеру «Б»?
SELECT Count(*) FROM nyc_streets WHERE name LIKE 'B%';
1282
Яка чисельність населення міста Нью-Йорк?
SELECT Sum(popn_total) AS population FROM nyc_census_blocks;
8175032
Примітка
Що таке
AS
? Ви можете надати таблиці або стовпцю іншу назву, використовуючи псевдонім. Псевдоніми можуть спростити як написання, так і читання запитів. Тому замість виведеного імені стовпцяsum
ми пишемо AS більш зрозуміле «population».Яка чисельність населення Бронкса?
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, яка повертає суму записів у наборі записів.