首頁 >資料庫 >mysql教程 >如何在沒有COUNTIF的情況下在SQL Server中執行條件計數?

如何在沒有COUNTIF的情況下在SQL Server中執行條件計數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-11 12:56:47792瀏覽

How to Perform Conditional Counting in SQL Server Without COUNTIF?

SQL Server 條件計數:基於 CASE 的方法

聚合函數對於 SQL Server 中的資料分析至關重要。雖然 COUNT 提供了總行數,但條件計數需要不同的策略。 SQL Server 缺少直接的 COUNTIF 等效項,但我們可以使用 SUMCASE 得到相同的結果。

想像一下需要計算 MyColumn 等於「1」的行的百分比。 一個天真的嘗試可能看起來像這樣:

<code class="language-sql">SELECT  UID, 
        COUNT(UID) AS TotalRecords, 
        SUM(ContractDollars) AS ContractDollars,
        (COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Incorrect: COUNTIF not supported
FROM    dbo.AD_CurrentView
GROUP BY UID
HAVING  SUM(ContractDollars) >= 500000</code>

COUNTIF 函數不是標準 SQL Server 函數。 解決方案在於利用 SUMCASE:

<code class="language-sql">SELECT  UID, 
        COUNT(UID) AS TotalRecords, 
        SUM(ContractDollars) AS ContractDollars,
        (SUM(CASE WHEN MyColumn = 1 THEN 1 ELSE 0 END) / COUNT(UID) * 100) -- Correct conditional count
FROM    dbo.AD_CurrentView
GROUP BY UID
HAVING  SUM(ContractDollars) >= 500000</code>

CASE 語句檢查每一行的 MyColumn。如果是‘1’則回傳1;否則,回傳 0。 SUM 然後將這些 1 和 0 相加,有效地計算 MyColumn 中「1」的出現次數。這提供了準確的條件計數,從而實現精確的計算和富有洞察力的數據分析。

以上是如何在沒有COUNTIF的情況下在SQL Server中執行條件計數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn