Rumah > Artikel > pangkalan data > Bagaimanakah anda boleh menggunakan GROUP BY untuk Pivot Data dalam MySQL?
Pivoting Query Results Menggunakan MySQL GROUP BY
Dalam pangkalan data hubungan, data pivoting merujuk kepada penyusunan semula baris dan lajur untuk meningkatkan visualisasi data . Di sini, kami menghampiri cabaran biasa: menukar data daripada berasaskan baris kepada berasaskan lajur menggunakan GROUP BY.
Pertanyaan
Untuk memutar data, kami boleh menggunakan GROUP Klausa BY bersama-sama dengan fungsi pengagregatan bersyarat, seperti SUM atau CASE. Mari kita pertimbangkan pertanyaan berikut:
PILIH
d.data_timestamp,
SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) SEBAGAI 'input_1',
JUMLAH(KES APABILA data_id = 2 KEMUDIAN nilai_data LAIN 0 TAMAT) SEBAGAI 'input_2'
DARI
data
KUMPULAN OLEH
d.data_timestamp
ORDER BY
ASC;data_timestamp
Penjelasan
Pendekatan Alternatif
MySQL juga menawarkan kaedah alternatif untuk memutar data. Pendekatan ini termasuk menggunakan fungsi IF() atau cantuman berbilang peringkat.
Fungsi IF()
PILIH
d. cap_masa,
JUMLAH(JIKA(id_data = 1, nilai_data, 0)) SEBAGAI 'input_1',
JUMLAH(JIKA(id_data = 2, nilai_data, 0)) SEBAGAI 'input_2'
DARI
data
KUMPULAN OLEH
d.data_timestamp
ORDER BY
d.data_timestamp ASC;
Berbilang Peringkat Sertaan
PILIH
d.data_timestamp,
d01.data_value AS 'input_1',
d02.data_value AS 'input_2'
FROM
🎜>
SELECT DISTINCT d.data_timestamp FROM data) AS d
KIRI SERTAI
data AS d01
HIDUP
d01.data_timestamp = d.data_timestamp DAN d01.data_id = 1
KIRI SERTAI
data AS d02
ON
d02.data_timestamp = d.data_timestamp AND d02.data_id = 2
ORDER BY
d.data_timestamp ASC;
Kesimpulan
Klausa GROUP BY MySQL menyediakan mekanisme yang berkuasa untuk memutarkan hasil pertanyaan. Teknik gabungan CASE, IF(), dan pelbagai peringkat menawarkan fleksibiliti dalam mengendalikan data dan menampung pelbagai struktur data. Memilih pendekatan optimum bergantung pada keperluan khusus dan pertimbangan prestasi.
Atas ialah kandungan terperinci Bagaimanakah anda boleh menggunakan GROUP BY untuk Pivot Data dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!