首頁 > 資料庫 > mysql教程 > 如何使用 GROUP BY 子句在 MySQL 中轉換查詢結果?

如何使用 GROUP BY 子句在 MySQL 中轉換查詢結果?

DDD
發布: 2024-11-06 11:27:02
原創
949 人瀏覽過

How can I pivot query results in MySQL using the GROUP BY clause?

在MySQL 中使用GROUP BY 透視查詢結果

透過將資料從行重組為列,透視可以幫助改進資料視覺化和分析。若要基於特定列透視查詢結果,我們可以使用 MySQL 中的 GROUP BY 子句。

考慮具有以下架構的範例表:

data_id     data_timestamp         data_value
--------------------------------------------
1           2011-07-07 00:01:00    0.400  
1           2011-07-07 00:02:00    0.500
1           2011-07-07 00:03:00    0.600
1           2011-07-07 00:04:00    0.700
2           2011-07-07 00:01:00    0.100  
2           2011-07-07 00:02:00    0.200
2           2011-07-07 00:03:00    0.250
2           2011-07-07 00:04:00    2.300
登入後複製

要基於以下內容透視此資料data_timestamp 資料列,我們可以使用CASE 語句和SUM 聚合函數的組合:

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'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC
登入後複製

此查詢有效地總結了每個唯一data_timestamp 的data_value 列,並為每個不同的data_id 建立新列(在此case,input_1 和input_2)。

或者,我們也可以使用IF 語句來得到相同的結果:

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'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC
登入後複製

這兩種方法都提供了一種有效的方法來使用MySQL 中的GROUP BY子句,允許更靈活且資訊豐富的數據分析。

以上是如何使用 GROUP BY 子句在 MySQL 中轉換查詢結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板