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中文网其他相关文章!