Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Membentuk Semula Data Panjang/Tinggi kepada Format Lebar dalam MySQL?

Bagaimanakah Saya Boleh Membentuk Semula Data Panjang/Tinggi kepada Format Lebar dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-12-21 01:38:14
asal
432 orang telah melayarinya

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

Membentuk Semula Data dalam MySQL: Menukar Format Panjang/Tinggi kepada Lebar

Dalam analisis data, selalunya perlu untuk membentuk semula data dari panjang / format tinggi kepada format yang luas. Transformasi ini menukar jadual dengan berbilang baris dan lajur kepada jadual dengan lebih sedikit baris dan lebih banyak lajur.

Pernyataan Masalah

Pertimbangkan jadual MySQL dengan data dalam panjang/tinggi format, di mana setiap baris mewakili satu pemerhatian dengan negara, kunci dan nilai. Matlamatnya adalah untuk membentuk semula data ke dalam format yang luas, dengan satu baris untuk setiap negara dan lajur untuk setiap kunci.

SQL Solution

MySQL menyediakan ciri terbina dalam dipanggil tab silang atau jadual pangsi untuk mencapai transformasi ini. Begini caranya:

1. Mengenalpasti Kekunci

Gunakan pertanyaan untuk memilih kunci yang berbeza daripada jadual asal:

SELECT DISTINCT key FROM table;
Salin selepas log masuk

Output pertanyaan ini akan menyediakan senarai elemen utama.

2. Mencipta Jadual Lebar

Buat jadual baharu dengan struktur berikut:

CREATE TABLE wide_table (
  country VARCHAR(255),
  key1 VARCHAR(255),
  ...,
  keyN VARCHAR(255),
  newPkey INT AUTO_INCREMENT PRIMARY KEY
);
Salin selepas log masuk

Ganti kekunci1, ..., kekunciN dengan nama kunci sebenar yang diperoleh dalam langkah 1. lajur newPkey ialah kunci utama penambahan automatik yang digunakan untuk mengenal pasti secara unik setiap baris dalam jadual lebar.

3. Mengisi Nilai Jadual

Gunakan pertanyaan silang tab untuk mengisi jadual lebar:

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

FROM table 
GROUP BY country;
Salin selepas log masuk

Pertanyaan ini menggunakan pengagregatan bersyarat (MAX dan IF) untuk menetapkan nilai pada lajur utama bagi setiap negara. Baris dengan kekunci pendua untuk negara yang sama dihapuskan dengan menggunakan fungsi MAX.

Contoh Input dan Output

Input:

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

Output:

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

Contoh ini menunjukkan transformasi daripada format panjang/tinggi hingga lebar menggunakan tab silang MySQL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membentuk Semula Data Panjang/Tinggi kepada Format Lebar dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan