Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Logik Bersyarat dalam Fungsi COUNT() SQL?
Pengiraan bersyarat dalam SQL: fungsi Count() Bersyarat
Fungsi Count() dalam SQL biasanya digunakan untuk mengira bilangan baris dalam jadual. Walau bagaimanapun, dalam beberapa kes anda mungkin perlu mengira baris tertentu sahaja berdasarkan syarat. Artikel ini membincangkan sama ada adalah mungkin untuk menentukan syarat dalam pernyataan Count().
Soalan
Seorang pengguna menemui senario di mana mereka perlu mengira baris hanya jika syarat tertentu dipenuhi dalam lajur. Khususnya, mereka hanya mahu mengira baris dengan nilai "Pengurus" dalam lajur "Kedudukan". Keperluan unik adalah untuk melakukan pengiraan bersyarat ini dalam pernyataan Count() itu sendiri, tanpa menggunakan klausa WHERE. Ini kerana mereka perlu mengira kedua-dua baris "Pengurus" dan "Lain-lain" dalam pertanyaan yang sama.
Penyelesaian
Untuk melaksanakan pengiraan bersyarat ini tanpa menggunakan WHERE, anda boleh menggunakan fakta bahawa fungsi agregat Count() hanya mengira nilai bukan nol. Berikut ialah penyelesaian menggunakan ungkapan CASE:
<code class="language-sql">select count(case Position when 'Manager' then 1 else null end) from ...</code>
Dalam pernyataan ini, ungkapan CASE menyemak sama ada lajur "Kedudukan" adalah sama dengan 'Pengurus'. Mengembalikan 1 jika benar, batal sebaliknya. Fungsi Count() kemudian menilai nilai bukan nol yang dikembalikan oleh ungkapan CASE, dengan berkesan mengira hanya baris "Pengurus".
Alternatif
Pendekatan lain ialah menggunakan fungsi agregat sum() dengan cara yang sama:
<code class="language-sql">select sum(case Position when 'Manager' then 1 else 0 end) from ...</code>
Dalam kes ini, ungkapan CASE mengembalikan 1 untuk baris "Pengurus" dan 0 untuk baris yang lain. Fungsi sum() kemudian mengira jumlah nilai ini, menghasilkan kiraan baris "Pengurus".
Kesimpulan
Syarat boleh dinyatakan dalam pernyataan Count() dengan menggunakan ungkapan CASE atau fungsi agregat sum(). Ini membolehkan baris dikira dengan cekap berdasarkan keadaan tertentu, walaupun dalam situasi di mana klausa WHERE mungkin tidak sesuai.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Logik Bersyarat dalam Fungsi COUNT() SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!