Heim >Datenbank >MySQL-Tutorial >Wie werden Abfrageergebnisse in MySQL mithilfe von GROUP BY geschwenkt?

Wie werden Abfrageergebnisse in MySQL mithilfe von GROUP BY geschwenkt?

Linda Hamilton
Linda HamiltonOriginal
2024-11-15 10:46:02876Durchsuche

How to Pivot Query Results in MySQL Using GROUP BY?

MySQL PIVOTING-Abfrageergebnisse mit GROUP BY

Ziel

Zeilen mithilfe der PIVOT- oder GROUP BY-Technik in Spalten in einer MySQL-Tabelle umwandeln.

Hintergrund

PIVOTING, eine Datentransformationstechnik, ordnet Zeilendaten in Spalten neu an. In diesem Fall besteht das Ziel darin, Daten nach einer bestimmten Spalte, beispielsweise einem Zeitstempel, zu gruppieren und jeden Datenwert als separate Spalte anzuzeigen.

Verwendung von CASE-Anweisungen

Anstelle der herkömmlichen PIVOT-Syntax , die in MySQL nicht allgemein unterstützt wird, kann die SUM()-Funktion in Verbindung mit CASE-Anweisungen verwendet werden, um das gewünschte Ziel zu erreichen Ergebnis.

<code class="sql">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</code>

Verwenden von IF-Anweisungen

Alternativ können IF-Anweisungen innerhalb der SUM()-Funktion verwendet werden, um das gleiche Ergebnis zu erzielen.

<code class="sql">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</code>

Verwenden von Multiple JOIN-Anweisungen

Ein anderer Ansatz besteht darin, mehrere JOIN-Anweisungen zu verwenden, um das gewünschte zu erstellen Ausgabe.

<code class="sql">SELECT d.data_timestamp
     , d01.data_value AS 'input_1'
     , d02.data_value AS 'input_2'
     ...
     , d20.data_value AS 'input_20'
FROM
  (SELECT DISTINCT d.data_timestamp
    FROM data
  ) AS d
  LEFT JOIN data AS d01
    ON d01.data_timestamp = d.data_timestamp
    AND d01.data_id = 1
  LEFT JOIN data AS d02
    ON d02.data_timestamp = d.data_timestamp
    AND d02.data_id = 2
  ...                                   --- 20 JOINs
  LEFT JOIN data AS d20
    ON d20.data_timestamp = d.data_timestamp
    AND d20.data_id = 20
ORDER BY d.data_timestamp ASC</code>

Durch die Verwendung dieser Techniken können Sie Abfrageergebnisse in MySQL mithilfe von GROUP BY ganz einfach Pivotieren.

Das obige ist der detaillierte Inhalt vonWie werden Abfrageergebnisse in MySQL mithilfe von GROUP BY geschwenkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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