MySQL Conditional Agregation: Membuka kunci Keupayaan 'SUM IF' dan 'COUNT IF'
Dalam MySQL, melaksanakan pengagregatan bersyarat, seperti menjumlahkan atau mengira nilai berdasarkan syarat tertentu, boleh dicapai melalui penggunaan penyata CASE. Ini membolehkan anda menggunakan kriteria secara fleksibel pada operasi pengagregatan anda.
Pertimbangkan senario berikut: anda mempunyai jadual dengan lajur 'jam' dan 'jenis' (yang boleh menyimpan nilai 1, 2 atau 3). Anda ingin mengira bilangan baris, mengira jumlah jam dan menentukan kiraan baris yang 'jenis' bersamaan dengan 1.
Pada mulanya, anda boleh mencuba pertanyaan berikut:
SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne
atau
SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
Walau bagaimanapun, pertanyaan ini mungkin akan mengakibatkan ralat. Untuk menyelesaikan masalah ini, anda perlu menggunakan pernyataan CASE dalam operasi pengagregatan:
SELECT count(id), SUM(hour) as totHour, SUM(case when kind = 1 then 1 else 0 end) as countKindOne
Dalam pernyataan CASE ini, kami menyatakan bahawa jika nilai dalam lajur 'jenis' ialah 1, kami mengembalikan 1, jika tidak. kita kembalikan 0. Ini membolehkan kita mengira baris dengan syarat 'jenis' bersamaan dengan 1.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi 'SUM IF' dan 'COUNT IF' dalam MySQL dengan Pengagregatan Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!