So ändern Sie die Tabellenform, um Zeilen in Spalten in MySQL umzuwandeln

MySQL ist eines der beliebtesten relationalen Datenbankmanagementsysteme der Welt. MySQL ermöglicht es uns, Daten in tabellarischer Form zu speichern, zu verwalten und zu analysieren. Eine Tabelle besteht aus Zeilen und Spalten, die Entitäten und Datenattribute darstellen. Manchmal müssen wir jedoch die Form der Tabelle ändern, um Zeilen in Spalten oder umgekehrt umzuwandeln. Dies wird als Tabellentransposition bezeichnet.

Umsetzungstabellen können aus mehreren Gründen nützlich sein, z. B.:

  • Vereinfachen Sie die Datenvisualisierung und das Datenverständnis
  • Optimieren der Abfrage- und Indexleistung
  • Passen Sie Datenstrukturen an Geschäfts- oder Anwendungsanforderungen an
  • Ausführen von Aggregations- oder Berechnungsvorgängen für Daten
script mysql

MySQL verfügt jedoch nicht über eine eingebaute Funktion, um Tabellen direkt zu transponieren. Daher müssen wir bestimmte Techniken oder Tricks anwenden, um dieses Ziel zu erreichen. In diesem Artikel besprechen wir verschiedene Möglichkeiten, die Form einer Tabelle zu ändern, um Zeilen in Spalten in MySQL umzuwandeln, zusammen mit Beispielen und Erklärungen.

Methode 1: Verwenden der Aggregationsfunktion und der GROUP BY-Klausel

Eine Möglichkeit, die Form einer Tabelle zu ändern, um Zeilen in Spalten in MySQL zu konvertieren, ist die Verwendung der Aggregationsfunktion und der GROUP BY-Klausel. Eine Aggregationsfunktion ist eine Funktion, die eine Reihe von Werten als Eingabe verwendet und einen einzelnen Wert als Ausgabe zurückgibt. Einige häufig verwendete Aggregationsfunktionen in MySQL sind:

  • SUM(): Berechnet die Gesamtzahl eines Satzes von Werten
  • AVG(): Berechnet den Durchschnitt eines Satzes von Werten
  • MIN(): Gibt den kleinsten Wert einer Gruppe von Werten zurück
  • MAX(): Gibt den größten Wert einer Gruppe von Werten zurück
  • COUNT(): Zählt die Anzahl der Werte, die in einem Satz von Werten vorhanden sind

Eine GROUP BY-Klausel ist eine Klausel, die zum Gruppieren von Zeilen verwendet wird, die denselben Wert in einer oder mehreren Spalten aufweisen. Die GROUP BY-Klausel wird in der Regel in Verbindung mit einer Aggregationsfunktion verwendet, um Aggregatwerte für jede Gruppe zu berechnen.

Um das Tabellenformular so zu ändern, dass Zeilen mithilfe der Aggregationsfunktion und der GROUP BY-Klausel in Spalten konvertiert werden, müssen wir die folgenden Schritte ausführen:

  • Geben Sie die Spalte an, die die neue Zeile in der Ergebnistabelle sein soll. Bei dieser Spalte handelt es sich in der Regel um eine Spalte, die unterschiedliche Werte aufweist und nicht zu viele. Beispiel: Jahr, Monat, Kategorie, Typ usw. Spalten.
  • Geben Sie die Spalte an, die die neue Spalte in der Ergebnistabelle sein soll. Bei dieser Spalte handelt es sich in der Regel um eine Spalte, die für jede Zeile den gleichen oder einen begrenzten Wert aufweist. Zum Beispiel Name, Produkt, Marke usw. Spalten.
  • Geben Sie die Aggregationsfunktion an, die zum Berechnen des Werts für jede neue Zeilen- und Spaltenkombination verwendet wird. Diese Aggregationsfunktion hängt von der Art der Daten und dem Zweck unserer Analyse ab. Beispiel: SUM(), AVG(), MIN(), MAX() usw.
  • Erstellen Sie eine SQL-Abfrage, die die Aggregationsfunktion und die GROUP BY-Klausel verwendet, um die gewünschte Ergebnistabelle zurückzugeben.

Schauen wir uns ein Beispiel an, um dies besser zu verstehen. Angenommen, wir haben die folgende Tabelle, in der Produktverkaufsdaten für jeden Monat und jede Kategorie gespeichert sind:

monthcategorysales
JanA100
JanB200
JanC300
FebA150
FebB250
FebC350
MarA200
MarB300
MarC400

Diese Tabelle enthält drei Spalten: Monat, Kategorie und Umsatz. Wir möchten die Form dieser Tabelle ändern, um Zeilen in Spalten umzuwandeln, damit wir den Gesamtumsatz für jede Kategorie und jeden Monat in einer Tabelle sehen können. Die gewünschte Ergebnistabelle sieht wie folgt aus:

categoryJanFebMar
A100150200
B200250300
C300350400

Um dieses Ziel zu erreichen, können wir Weg 1 mit den folgenden Schritten verwenden:

  • Geben Sie die Spalte an, die die neue Zeile in der Ergebnistabelle sein soll. In diesem Fall ist die Kategoriespalte eine neue Zeile, da sie unterschiedliche Werte und nicht zu viele (A, B, C) hat.
  • Geben Sie die Spalte an, die die neue Spalte in der Ergebnistabelle sein soll. In diesem Fall ist die Monatsspalte die neue Spalte, da sie für jede Zeile den gleichen oder einen begrenzten Wert aufweist (Jan, Feb, März).
  • Geben Sie die Aggregationsfunktion an, die zum Berechnen des Werts für jede neue Zeilen- und Spaltenkombination verwendet wird. In diesem Fall verwenden wir die Funktion SUM(), um den Gesamtumsatz für jede Kategorie und jeden Monat zu berechnen.
  • Erstellen Sie eine SQL-Abfrage, die die Aggregationsfunktion und die GROUP BY-Klausel verwendet, um die gewünschte Ergebnistabelle zurückzugeben. Die SQL-Abfragen, die wir verwenden können, sind wie folgt:
SELECT
category
SUM(CASE WHEN month ='Jan' THEN sales ELSE 0 END) AS Jan,
SUM(CASE WHEN month = 'Feb' THEN sales ELSE 0 END) AS Feb,
SUM(CASE WHEN month = 'Mar' THEN sales ELSE 0 END) AS Mar
FROM
sales_table
GROUP BY
category;

Diese Abfrage führt die folgenden Schritte aus:

  • Wählen Sie die Kategoriespalte aus der Tabelle sales_table
  • Verwenden Sie die Funktionen SUM() und CASE, um den Gesamtumsatz für jede Kategorie und jeden Monat zu berechnen. CASE ist eine bedingte Anweisung, die einen Wert basierend auf einer bestimmten Bedingung zurückgibt. In dieser Abfrage verwenden wir CASE, um den monatlichen Wert zu überprüfen und gegebenenfalls den Verkaufswert oder 0 zurückzugeben, wenn dies nicht der Fall ist. Beispiel: SUM(CASE WHEN month =’Jan‘ THEN sales ELSE 0 END) gibt den Gesamtumsatz für Januar für jede Kategorie oder 0 zurück, wenn für diesen Monat keine Verkäufe vorhanden sind.
  • Geben Sie jeder neuen Spalte mithilfe von AS einen Aliasnamen. Alias ist ein alternativer Name, den wir einer Spalte oder Tabelle geben können, um das Schreiben und Lesen einer Abfrage zu erleichtern. In dieser Abfrage geben wir jeder neuen Spalte einen Aliasnamen mit einem entsprechenden Monatsnamen, z. B. Jan, Feb und März.
  • Verwenden Sie die GROUP BY-Klausel, um Zeilen nach der Kategoriespalte zu gruppieren. Die GROUP BY-Klausel erstellt eine Zeile für jeden eindeutigen Wert in der Kategoriespalte und berechnet einen Aggregatwert für jede zweite Spalte.

Diese Abfrage generiert die gewünschte Ergebnistabelle, wie oben gezeigt.

Neueste Artikel