Rumah > pangkalan data > tutorial mysql > Bagaimana Mengira Rekod Berdasarkan Keadaan dalam SQL Server Tanpa COUNTIF?

Bagaimana Mengira Rekod Berdasarkan Keadaan dalam SQL Server Tanpa COUNTIF?

Susan Sarandon
Lepaskan: 2025-01-11 13:02:42
asal
802 orang telah melayarinya

How to Count Records Based on Conditions in SQL Server Without COUNTIF?

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>
Salin selepas log masuk

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

  • Nilai NULL mungkin menjejaskan keputusan. Untuk mengendalikan nilai NULL, anda boleh mengubah suai pernyataan CASE kepada:
<code class="language-sql">SUM(CASE WHEN ISNULL(MyColumn,0)=1 THEN 1 ELSE 0 END)</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan