首页 > 数据库 > mysql教程 > 如何在没有COUNTIF的情况下在SQL Server中执行条件计数?

如何在没有COUNTIF的情况下在SQL Server中执行条件计数?

Mary-Kate Olsen
发布: 2025-01-11 12:56:47
原创
791 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板