Apa perbedaan antara COUNT(CASE WHEN [Column A] = ____ THEN 1 END
dan COUNT(CASE WHEN [Column A] = ____ THEN 1 ELSE 0 END
?
Saya telah menggunakan yang pertama dan sejauh ini saya belum melihat perbedaannya; apa alasan untuk menambahkan ELSE 0
- apakah ada situasi di mana SQL Server akan salah menghitung?
sql-server
sql-server-2008
coburne
sumber
sumber
Jawaban:
Cukup sederhana dalam kasus pertama Anda menghitung 1s & NULLs. (NULL dikembalikan jika tidak ada kondisi dalam pernyataan KASUS yang cocok dan tidak ada klausa ELSE.) NULL tidak dihitung. Dalam kasus kedua 1 dan 0. 0 dapat dihitung.
Contoh cepat:
Keluaran:
sumber
Jika Anda tidak menentukan bagian lain untuk pernyataan kasus, maka akan mengembalikan NULL secara default, dan dalam kasus Anda itu adalah hal yang baik, karena hitungan akan menghitung nilai-nilai non-NULL. Jika Anda mengembalikan apa pun dari kasing, tidak masalah jika itu 1, 0 atau 2, itu akan selalu dihitung sebagai 1.
Jika Anda akan menggunakan jumlah alih-alih menghitung, maka Anda harus mengembalikan 1 atau 0.
sumber