Ich analysiere einen Datensatz zu Stromausfällen, und es gibt eine Spalte, die zeigt, welche Bereiche/Zustände betroffen sind. Wie kann ich Duplikate für Zeilen erstellen, die mehrere Zustandsnamen enthalten, und dann eine neue Spalte bevölkern, die jeden der Staaten beschreibt? Das Endziel ist es, zu zählen, wie viele Ausfälle jeder Staat hatte. Mit '%Virginia%' würde "West Virginia" zweimal bevölkern. Dies muss ich vielleicht später manuell reparieren, indem ich für alle nulls . inputted as "W. Virginia"
My current table:
index
area_affected
< /tr>
< /thead>
1 < /td>
Indiana. Kentucky; Michigan
2
Virginia, West Virginia
3
Henrico County, Virginia
4 < /td>
Central Virginia < /td>
< /tr>
5 < /td>
Los Angeles < /td>
< /tr> < /> < /> < /tbody> < /> < /tbody> < /> < /tbody> < /> < /tbody> < /> < /tbody> < /> < /tbody> < /> < /tbody> < /> < /tbody desired output:
index
area_affected
state_affected
1 < /td>
Indiana. Kentucky; Michigan < /td>
indiana < /td>
< /tr>
1 < /td>
Indiana. Kentucky; Michigan < /td>
Kentucky < /td>
< /tr>
1 < /td>
Indiana. Kentucky; Michigan
Michigan
2
Virginia, West Virginia
Virginia
2
Virginia, West Virginia
West Virginia
3
Henrico County, Virginia
Virginia
4
Central Virginia
Virginia
5
Los Angeles
Null
< /tr>
< /tbody>
< /table> < /div>
Mein vorheriger Versuch: < /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>
Ich bin sicher, dass es einen besseren Weg gibt, dies zu tun. Ihre Hilfe wäre sehr geschätzt!
Erstellen einer neuen Zeile für jeden Staatsnamen aus einer Spalte [geschlossen] ⇐ MySql
-
- Similar Topics
- Replies
- Views
- Last post