首頁 >資料庫 >mysql教程 >如何使用 GROUP BY 在 MySQL 中透視資料?

如何使用 GROUP BY 在 MySQL 中透視資料?

Barbara Streisand
Barbara Streisand原創
2024-11-08 13:48:02815瀏覽

How can you use GROUP BY to Pivot Data in MySQL?

使用 MySQL GROUP BY 透視查詢結果

在關聯式資料庫中,透視資料是指重新排列行和列以增強資料視覺化。在這裡,我們面臨一個常見的挑戰:使用 GROUP BY 將資料從基於行的資料轉換為基於列的資料。

查詢

要透視數據,我們可以使用 GROUP BY 子句以及條件聚合函數,例如 SUM 或 CASE。讓我們考慮以下查詢:

<br>SELECT<br> d.data_timestamp,<br> SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) AS 'input_1',FROM<br> 資料<br>GROUP BY<br> d.data_timestamp<br>ORDER BY ABY



說明

查詢從資料表中擷取唯一的data_timestamp 值,並依data_timestamp 將結果分組。

    在每個群組中,它計算 data_values 的總和對應的 data_id(例如,data_id = 1 的 input_1)。
  • SUM() 函數透過預設為 NULL 值 0 來處理缺失值。
  • 查詢的輸出以柱狀形式呈現格式,每個data_timestamp 與指定的data_values 總和相關聯data_id.
  • 替代方法

MySQL 也提供了旋轉資料的替代方法。這些方法包括使用 IF() 函數或多層連接。

IF() 函數

SELECT

d. data_timestamp,

SUM(IF(data_id = 1, data_valuestamp, SUM(IF(data_id = 2, data_value, 0)) AS 'input_2'
FROM
資料
GROUP BY
d.data_prostamp BY
d.data_timestamp ASC;



多層次連接

<time>SELECT<time> d._Samp ,<strong> d01.data_value AS 'input_1',</strong> d02.data_value AS 'input_2'FROM<p> (<br><br><br>) ASFT🎜> (<br><br><br>) ASFT</p>資料AS d01<pre class="brush:php;toolbar:false">SELECT DISTINCT d.data_timestamp
FROM data
ON

d01.data_timestamp = d .data_timestamp AND d01.data_id = 1
LEFT JOIN
資料AS d02
ON
dtimed. .data_id = 2
ORDER BY
d.data_timestamp ASC;




結論
My 的子句提供了強大的旋轉查詢結果的機制。 CASE、IF() 和多層連接技術提供了處理資料和適應各種資料結構的靈活性。選擇最佳方法取決於具體要求和性能考慮。

以上是如何使用 GROUP BY 在 MySQL 中透視資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn