Heim > Datenbank > MySQL-Tutorial > Wie kann ich Long/Tall-Daten in MySQL in Wide-Format umwandeln?

Wie kann ich Long/Tall-Daten in MySQL in Wide-Format umwandeln?

Mary-Kate Olsen
Freigeben: 2024-12-21 01:38:14
Original
433 Leute haben es durchsucht

How Can I Reshape Long/Tall Data to Wide Format in MySQL?

Umformen von Daten in MySQL: Konvertieren von Long/Tall in Breitformat

Bei der Datenanalyse ist es oft notwendig, Daten aus einem Long-/Tall-Format umzuformen /tall-Format in ein Breitformat umwandeln. Diese Transformation wandelt eine Tabelle mit mehreren Zeilen und Spalten in eine Tabelle mit weniger Zeilen und mehr Spalten um.

Problemstellung

Stellen Sie sich eine MySQL-Tabelle mit Daten im Lang-/Hochformat vor Format, wobei jede Zeile eine einzelne Beobachtung mit einem Land, einem Schlüssel und einem Wert darstellt. Ziel ist es, die Daten in ein Breitformat umzuwandeln, mit einer Zeile für jedes Land und Spalten für jeden Schlüssel.

SQL-Lösung

MySQL bietet eine integrierte Funktion sogenannte Kreuztabellen oder Pivot-Tabellen, um diese Transformation durchzuführen. So geht's:

1. Identifizieren von Schlüsseln

Verwenden Sie eine Abfrage, um verschiedene Schlüssel aus der Originaltabelle auszuwählen:

SELECT DISTINCT key FROM table;
Nach dem Login kopieren

Die Ausgabe dieser Abfrage liefert eine Liste von Schlüsselelementen.

2. Erstellen der breiten Tabelle

Erstellen Sie eine neue Tabelle mit der folgenden Struktur:

CREATE TABLE wide_table (
  country VARCHAR(255),
  key1 VARCHAR(255),
  ...,
  keyN VARCHAR(255),
  newPkey INT AUTO_INCREMENT PRIMARY KEY
);
Nach dem Login kopieren

Ersetzen Sie key1, ..., keyN durch die tatsächlichen Schlüsselnamen, die Sie in Schritt 1 erhalten haben. Die Die Spalte newPkey ist ein automatisch inkrementierender Primärschlüssel, der zur eindeutigen Identifizierung jeder Zeile in der breiten Tabelle verwendet wird.

3. Tabellenwerte füllen

Verwenden Sie eine Kreuztabellenabfrage, um die breite Tabelle zu füllen:

SELECT country, 
       MAX(IF(key='President', value, NULL)) AS President,
       MAX(IF(key='Currency', value, NULL)) AS Currency,
       ...

FROM table 
GROUP BY country;
Nach dem Login kopieren

Diese Abfrage nutzt bedingte Aggregation (MAX und IF), um den Schlüsselspalten Werte zuzuweisen für jedes Land. Zeilen mit doppelten Schlüsseln für dasselbe Land werden mithilfe der MAX-Funktion entfernt.

Beispieleingabe und -ausgabe

Eingabe:

country attrName attrValue key
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan 5

Ausgabe:

country President Currency newPkey
US Obama Dollar 1
China Hu Yuan 2

Dieses Beispiel zeigt die Umwandlung vom Lang-/Hochformat ins Breitformat mithilfe von MySQL-Kreuztabellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Long/Tall-Daten in MySQL in Wide-Format umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage