Население по регионам США

Использование SQL Допустим, у нас есть набор данных о населении по штатам (например, Вермонт, 623 251 человек и т. д.), но мы хотим знать население по регионам США (например, Средний Запад, 68 985 454 человека). Не могли бы вы описать, как бы вы это сделали?

Набор данных с census.gov

Где я застрял

-- Сначала я создал таблицу со столбцами штата и населения.

CREATE TABLE states (
    state VARCHAR(20),
    population INT
);

-- Затем я загрузил CSV-файл с сайта census.gov, который я очистил.

SELECT * FROM states;

--Создана временная таблица для добавления в столбец региона.

DROP TABLE IF EXISTS temp_Regions;

CREATE TEMP TABLE temp_Regions (
    state VARCHAR(20),
    state_pop INT,
    region VARCHAR(20),
    region_pop INT
);

INSERT INTO temp_Regions
SELECT state, population
FROM states;

--Используются операторы CASE WHEN для помещения штатов в соответствующие регионы.

SELECT state,
    CASE WHEN state IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode Island', 'Vermont', 'New Jersey', 'New York', 'Pennsylvania') THEN 'Northeast'
         WHEN state IN ('Illinois', 'Indiana', 'Michigan', 'Ohio', 'Wisconsin', 'Iowa', 'Kansas', 'Minnesota', 'Missouri', 'Nebraska', 'North Dakota', 'South Dakota') THEN 'Midwest'
         WHEN state IN ('Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Maryland', 'North Carolina', 'South Carolina', 'Virginia', 'West Virginia', 'Alabama', 'Kentucky', 'Mississippi', 'Tennessee', 'Arkansas', 'Louisiana', 'Oklahoma', 'Texas') THEN 'South'
         WHEN state IN ('Arizona', 'Colorado', 'Idaho', 'Montana', 'Nevada', 'New Mexico', 'Utah', 'Wyoming', 'Alaska', 'California', 'Hawaii', 'Oregon', 'Washington') THEN 'West'
    END AS region, state_pop, region_pop
    FROM temp_Regions;

-- Теперь я застрял в этой точке. Я не могу получить данные в столбец region_pop. Как получить сумму населения по регионам США?

Дайте мне знать, если вам нужны дополнительные разъяснения по вещам. Спасибо за вашу помощь!

Пожалуйста, покажите образцы входных данных и ожидаемый результат в виде таблиц в вашем вопросе. Не загружайте изображения или ссылки.

Jonas Metzler 06.01.2023 06:23
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать аналитическую функцию sum() over (partition by) для достижения этой цели.

with data
 as (
    SELECT state
          ,CASE WHEN state IN ('Connecticut', 'Maine', 'Massachusetts', 'New Hampshire', 'Rhode Island', 'Vermont', 'New Jersey', 'New York', 'Pennsylvania') THEN 'Northeast'
             WHEN state IN ('Illinois', 'Indiana', 'Michigan', 'Ohio', 'Wisconsin', 'Iowa', 'Kansas', 'Minnesota', 'Missouri', 'Nebraska', 'North Dakota', 'South Dakota') THEN 'Midwest'
             WHEN state IN ('Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Maryland', 'North Carolina', 'South Carolina', 'Virginia', 'West Virginia', 'Alabama', 'Kentucky', 'Mississippi', 'Tennessee', 'Arkansas', 'Louisiana', 'Oklahoma', 'Texas') THEN 'South'
             WHEN state IN ('Arizona', 'Colorado', 'Idaho', 'Montana', 'Nevada', 'New Mexico', 'Utah', 'Wyoming', 'Alaska', 'California', 'Hawaii', 'Oregon', 'Washington') THEN 'West'
            END AS region
            , state_pop
        FROM temp_Regions
      )
select state
       ,region
       ,state_pop
       ,sum(state_pop) over(partition by region) as region_population
  from data

Другие вопросы по теме