Я анализирую набор данных по отключениям электроэнергии, и есть столбец, который показывает, какие области/состояния затронуты. Как я могу создавать дубликаты для строк, которые содержат несколько имен состояний, а затем заполнить новый столбец, который помечает каждое из найденных состояний? Конечная цель состоит в том, чтобы иметь возможность подсчитать, сколько отключений было в каждом штате. Использование как '%Вирджиния%' заполняет «Западную Вирджинию» дважды. Это, возможно, мне придется вручную исправить, фильтруя для всех nulls .
[*] расщепление с запятыми не надежна, потому что иногда это город, который предшествует запятой
. inputted as "W. Virginia"
My current table:
index
area_affected
< /tr>
< /thead>
1 < /td>
Индиана. Кентукки; Michigan
2
Virginia, West Virginia
3
Henrico County, Virginia
4 < /td>
Центральная Вирджиния < /td>
< /tr>
5 < /td>
los angeles < /td>
< /tr>
< /tbody>
< /td>
< /tr>
< /tbody>
< /td>
< /tr>
< /tbody> < /tleber>
< /tbody> < /td. desired output:
index
area_affected
state_affected
1 < /td>
Индиана. Кентукки; Мичиган < /td>
Индиана < /td>
< /tr>
1 < /td>
Индиана. Кентукки; Мичиган < /td>
kentucky < /td>
< /tr>
1 < /td>
Индиана. Кентукки; Michigan
Michigan
2
Virginia, West Virginia
Virginia
2
Вирджиния, Западная Вирджиния < /td>
Западная Вирджиния < /td>
< /tr>
3 < /td>
Хенрико, графство, вирджиния < /td>
virginia < /td>
virginia < /td>
virginia < /> /> 4 < /td>
Центральная Вирджиния < /td>
Вирджиния < /td>
< /tr>
5 < /td>
los angeles < /td>
null < /br /> /> < /tr>
< /tbody>
< /table> < /div>
Моя предыдущая попытка: < /p>
-- reference table
CREATE TABLE us_states (
state_name VARCHAR(50) PRIMARY KEY
);
INSERT INTO us_states VALUES
('Alabama'), ('Alaska')...; -- inserted all 50 States
-- new table I can use to analyze outages per State
CREATE TABLE outages_by_state
SELECT o.*,
s.state_name AS state_affected
FROM outages o
CROSS JOIN us_states s
WHERE o.area_affected LIKE CONCAT('%', s.state_name, '%');
< /code>
Я уверен, что есть лучший способ сделать это. Ваша помощь была бы высоко оценена!
Подробнее здесь: https://stackoverflow.com/questions/797 ... m-a-column
Создание новой строки для каждого имени состояния, разворачиваемого из столбца [закрыто] ⇐ MySql
Форум по Mysql
1759237946
Anonymous
Я анализирую набор данных по отключениям электроэнергии, и есть столбец, который показывает, какие области/состояния затронуты. Как я могу создавать дубликаты для строк, которые содержат несколько имен состояний, а затем заполнить новый столбец, который помечает каждое из найденных состояний? Конечная цель состоит в том, чтобы иметь возможность подсчитать, сколько отключений было в каждом штате. Использование как '%Вирджиния%' заполняет «Западную Вирджинию» дважды. Это, возможно, мне придется вручную исправить, фильтруя для всех nulls .
[*] расщепление с запятыми не надежна, потому что иногда это город, который предшествует запятой
. inputted as "W. Virginia"
My current table:
index
area_affected
< /tr>
< /thead>
1 < /td>
Индиана. Кентукки; Michigan
2
Virginia, West Virginia
3
Henrico County, Virginia
4 < /td>
Центральная Вирджиния < /td>
< /tr>
5 < /td>
los angeles < /td>
< /tr>
< /tbody>
< /td>
< /tr>
< /tbody>
< /td>
< /tr>
< /tbody> < /tleber>
< /tbody> < /td. desired output:
index
area_affected
state_affected
1 < /td>
Индиана. Кентукки; Мичиган < /td>
Индиана < /td>
< /tr>
1 < /td>
Индиана. Кентукки; Мичиган < /td>
kentucky < /td>
< /tr>
1 < /td>
Индиана. Кентукки; Michigan
Michigan
2
Virginia, West Virginia
Virginia
2
Вирджиния, Западная Вирджиния < /td>
Западная Вирджиния < /td>
< /tr>
3 < /td>
Хенрико, графство, вирджиния < /td>
virginia < /td>
virginia < /td>
virginia < /> /> 4 < /td>
Центральная Вирджиния < /td>
Вирджиния < /td>
< /tr>
5 < /td>
los angeles < /td>
null < /br /> /> < /tr>
< /tbody>
< /table> < /div>
Моя предыдущая попытка: < /p>
-- reference table
CREATE TABLE us_states (
state_name VARCHAR(50) PRIMARY KEY
);
INSERT INTO us_states VALUES
('Alabama'), ('Alaska')...; -- inserted all 50 States
-- new table I can use to analyze outages per State
CREATE TABLE outages_by_state
SELECT o.*,
s.state_name AS state_affected
FROM outages o
CROSS JOIN us_states s
WHERE o.area_affected LIKE CONCAT('%', s.state_name, '%');
< /code>
Я уверен, что есть лучший способ сделать это. Ваша помощь была бы высоко оценена!
Подробнее здесь: [url]https://stackoverflow.com/questions/79778256/creating-a-new-row-for-each-state-name-parsed-out-from-a-column[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия