Anzeigen von Daten im Pivot-Format mit GROUP BY
Die vorliegende Aufgabe besteht darin, eine relationale Datenbanktabelle mit Zeilen, die einzelne Datenpunkte darstellen, in eine umzuwandeln Pivot-Format, bei dem Daten basierend auf Zeitstempeln in Spalten organisiert und Werte nach einem bestimmten Bezeichner gruppiert werden.
Um diese Pivot-Struktur zu erreichen, können wir die CASE-Anweisung in MySQL verwenden. Mit dieser Anweisung können wir Werte basierend auf verschiedenen Bedingungen bedingt zuweisen:
SELECT d.data_timestamp , SUM( CASE WHEN data_id = 1 THEN data_value ELSE 0 END ) AS 'input_1' , SUM( CASE WHEN data_id = 2 THEN data_value ELSE 0 END ) AS 'input_2' ... , SUM( CASE WHEN data_id = 20 THEN data_value ELSE 0 END ) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC
In dieser Abfrage verwenden wir die SUM-Funktion, um den Datenwert für jeden einzelnen Datenzeitstempel zu aggregieren. Die CASE-Anweisung prüft, ob die data_id mit einem bestimmten Wert übereinstimmt (z. B. 1, 2 oder 20). Bei Übereinstimmung geht der entsprechende data_value in die Summierung für die jeweilige Spalte ein (z. B. input_1, input_2, input_20). Wenn keine Übereinstimmung gefunden wird, wird bei der Berechnung Null verwendet. Dies führt zu einer Tabelle, in der data_timestamp die Zeilenkennung ist und jede data_id über eine eigene Spalte verfügt, in der der entsprechende aggregierte data_value angezeigt wird.
Für den gleichen Zweck können wir auch die IF-Anweisung anstelle von CASE verwenden:
SELECT d.data_timestamp , SUM( IF(data_id = 1, data_value, 0) ) AS 'input_1' , SUM( IF(data_id = 2, data_value, 0) ) AS 'input_2' ... , SUM( IF(data_id = 20, data_value, 0) ) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC
Sowohl der CASE- als auch der IF-Ansatz ermöglichen es uns, die erforderlichen Spalten dynamisch zu generieren und die Werte basierend auf data_id und data_timestamp zu aggregieren, um die Daten letztendlich im gewünschten Pivot-Format darzustellen.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in MySQL mithilfe von „CASE'- oder „IF'-Anweisungen Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!