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, яка повертає суму записів у наборі записів.