ホームページ >データベース >mysql チュートリアル >COUNTIF を使用せずに SQL Server で条件付きカウントを実行するにはどうすればよいですか?

COUNTIF を使用せずに SQL Server で条件付きカウントを実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-11 12:56:47826ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。