Kira rekod berdasarkan keadaan dalam SQL Server (tiada COUNTIF diperlukan)
Dalam analisis data, selalunya perlu mengira rekod berdasarkan keadaan tertentu. Walaupun SQL Server tidak mempunyai fungsi COUNTIF asli, terdapat cara lain untuk mencapai fungsi ini.
Contoh berikut menunjukkan cara mengira peratusan rekod dengan nilai MyColumn
ialah 1, sambil mengumpulkan mengikut UID
dan menapis rekod yang ContractDollars
lebih besar daripada atau sama dengan 500000.
Gunakan penyata SUM dan CASE bukannya COUNTIF
Salah satu cara untuk melaksanakan COUNTIF dalam SQL Server adalah dengan menggunakan fungsi SUM bersama-sama dengan pernyataan CASE untuk menyemak syarat yang diperlukan:
<code class="language-sql">SELECT UID, COUNT(UID) AS TotalRecords, SUM(ContractDollars) AS ContractDollars, SUM(CASE WHEN MyColumn=1 THEN 1 ELSE 0 END) * 100.0 / COUNT(UID) AS PercentageOf1 FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000;</code>
Dalam pertanyaan ini, pernyataan CASE menilai setiap rekod MyColumn
dan mengembalikan 1 jika nilainya ialah 1 dan 0 sebaliknya. Kemudian, fungsi SUM mengira bilangan rekod yang memenuhi syarat.
Peratusan rekod dengan nilai yang dikehendaki boleh diperoleh dengan membahagikan JUMLAH ungkapan CASE dengan jumlah bilangan rekod (COUNT(UID)) dan didarabkan dengan 100. Ambil perhatian bahawa 100.0 digunakan sebagai nombor titik terapung untuk mengambil bahagian dalam operasi di sini untuk memastikan bahawa hasilnya ialah nombor titik terapung dan mengelakkan kehilangan ketepatan yang disebabkan oleh pembahagian integer.
Nota lain
<code class="language-sql">SUM(CASE WHEN ISNULL(MyColumn,0)=1 THEN 1 ELSE 0 END)</code>
Ini memastikan bahawa nilai NULL diperlakukan sebagai 0, menghalangnya daripada menyimpang kiraan.
Dengan menggabungkan teknik ini, anda boleh mengira rekod berdasarkan syarat tertentu dalam SQL Server, memberikan cerapan berharga untuk analisis data.
Atas ialah kandungan terperinci Bagaimana Mengira Rekod Berdasarkan Keadaan dalam SQL Server Tanpa COUNTIF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!