SQL Server 條件計數:基於 CASE 的方法
聚合函數對於 SQL Server 中的資料分析至關重要。雖然 COUNT
提供了總行數,但條件計數需要不同的策略。 SQL Server 缺少直接的 COUNTIF
等效項,但我們可以使用 SUM
和 CASE
得到相同的結果。
想像一下需要計算 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 函數。 解決方案在於利用 SUM
和 CASE
:
<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中文網其他相關文章!