Создание новой строки для каждого имени состояния, разворачиваемого из столбца [закрыто]MySql

Форум по Mysql
Ответить
Anonymous
 Создание новой строки для каждого имени состояния, разворачиваемого из столбца [закрыто]

Сообщение 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>
Я уверен, что есть лучший способ сделать это. Ваша помощь была бы высоко оценена!


Подробнее здесь: https://stackoverflow.com/questions/797 ... m-a-column
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»