首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中將長/高資料重塑為寬格式?

如何在 MySQL 中將長/高資料重塑為寬格式?

Mary-Kate Olsen
發布: 2024-12-21 01:38:14
原創
433 人瀏覽過

How Can I Reshape Long/Tall Data to Wide Format in MySQL?

在MySQL 中重塑資料:將長/高格式轉換為寬格式

在資料分析中,經常需要對長資料進行重塑/tall 格式改為寬格式。此轉換將多行多列的表轉換為少行多列的表。

問題陳述

考慮一個包含 long/tall 資料的 MySQL 表格式,其中每行代表具有國家/地區、鍵和值的單一觀察值。目標是將資料重塑為寬格式,每個國家佔一行,每個鍵佔一列。

SQL 解決方案

MySQL 提供了一個內建功能稱為交叉表或資料透視表來完成此轉換。方法如下:

1.識別鍵

使用查詢從原始表中選擇不同的鍵:

SELECT DISTINCT key FROM table;
登入後複製

此查詢的輸出將提供鍵元素列表。

2.建立寬表

建立一個具有以下結構的新表:

CREATE TABLE wide_table (
  country VARCHAR(255),
  key1 VARCHAR(255),
  ...,
  keyN VARCHAR(255),
  newPkey INT AUTO_INCREMENT PRIMARY KEY
);
登入後複製

將key1, ..., keyN 替換為步驟1 中獲得的實際鍵名稱。 newPkey 欄位是一個自增主鍵,用於唯一標識寬表中的每一行。

3.填充表值

使用交叉表查詢填充寬表:

SELECT country, 
       MAX(IF(key='President', value, NULL)) AS President,
       MAX(IF(key='Currency', value, NULL)) AS Currency,
       ...

FROM table 
GROUP BY country;
登入後複製

此查詢利用條件聚合(MAX 和IF)為鍵列分配值對於每個國家。使用 MAX 函數消除同一國家/地區具有重複鍵的行。

示例輸入和輸出

輸入:

country attrName attrValue key
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan 5

輸出:

country President Currency newPkey
US Obama Dollar 1
China Hu Yuan 2

此範例示範了從使用MySQL交叉表將長/高轉換為寬格式。

以上是如何在 MySQL 中將長/高資料重塑為寬格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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