Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Melakukan Pengagregatan Bersyarat dengan SUM dan COUNT dalam MySQL?

Bagaimana untuk Melakukan Pengagregatan Bersyarat dengan SUM dan COUNT dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-16 07:32:02593semak imbas

How to Perform Conditional Aggregation with SUM and COUNT in MySQL?

Pengagregatan Bersyarat dengan SUM dan COUNT dalam MySQL

Apabila bekerja dengan pangkalan data hubungan, selalunya perlu melakukan pengagregatan bersyarat untuk meringkaskan berdasarkan data pada kriteria tertentu. MySQL menawarkan beberapa cara untuk mencapai ini, termasuk penggunaan pernyataan IF() dan CASE.

Menggunakan Pernyataan IF()

Dalam contoh anda, anda mencuba untuk menggunakan pernyataan IF() untuk mengira kiraan baris yang jenisnya sama dengan 1. Walau bagaimanapun, MySQL tidak membenarkan penggunaan pernyataan IF() secara agregat fungsi seperti SUM dan COUNT. Ini kerana IF() mengembalikan nilai skalar, manakala fungsi agregat memerlukan ungkapan lajur sebagai input.

Menggunakan Penyata KES

Untuk melaksanakan pengagregatan bersyarat, anda boleh gunakan pernyataan CASE. Pernyataan CASE membolehkan anda menentukan berbilang syarat dan mengembalikan nilai yang berbeza berdasarkan syarat tersebut.

Pertanyaan berikut menggunakan pernyataan CASE untuk mengira kiraan baris yang jenisnya sama dengan 1:

SELECT
    COUNT(id),
    SUM(hour) AS totHour,
    SUM(CASE
        WHEN kind = 1 THEN 1
        ELSE 0
    END) AS countKindOne
FROM your_table;

Dalam pertanyaan ini:

  • Pernyataan CASE digunakan untuk menilai jenis keadaan = 1.
  • Jika syarat adalah BENAR, ia akan mengembalikan 1.
  • Jika syarat tersebut SALAH, ia mengembalikan 0.
  • Hasil kenyataan KES kemudian diserahkan kepada fungsi agregat SUM().

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Pengagregatan Bersyarat dengan SUM dan COUNT dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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