SQL Server の条件に基づいてレコードをカウントします (COUNTIF は必要ありません)
データ分析では、多くの場合、特定の条件に基づいてレコードをカウントする必要があります。 SQL Server にはネイティブの COUNTIF 関数がありませんが、この機能を実現する他の方法があります。
次の例は、MyColumn
でグループ化し、UID
が 500000 以上であるレコードをフィルターしながら、ContractDollars
値が 1 であるレコードの割合を計算する方法を示しています。
COUNTIF の代わりに SUM ステートメントと CASE ステートメントを使用します
SQL Server で COUNTIF を実装する 1 つの方法は、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) * 100.0 / COUNT(UID) AS PercentageOf1 FROM dbo.AD_CurrentView GROUP BY UID HAVING SUM(ContractDollars) >= 500000;</code>
このクエリでは、CASE ステートメントは各レコードの MyColumn
を評価し、値が 1 の場合は 1 を返し、それ以外の場合は 0 を返します。次に、SUM 関数は、条件を満たすレコードの数をカウントします。
目的の値を持つレコードの割合は、CASE 式の SUM をレコードの総数 (COUNT(UID)) で割り、100 を掛けることで取得できます。 演算に参加する浮動小数点数として 100.0 が使用され、結果が確実に浮動小数点数になるようにし、整数の除算による精度の低下を避けることに注意してください。
その他の注意事項
<code class="language-sql">SUM(CASE WHEN ISNULL(MyColumn,0)=1 THEN 1 ELSE 0 END)</code>
これにより、NULL 値が 0 として扱われるようになり、カウントの偏りが防止されます。
これらの手法を組み合わせることで、SQL Server の特定の条件に基づいてレコードをカウントし、データ分析に貴重な洞察を提供できます。
以上がCOUNTIFを使用せずにSQL Serverで条件に基づいてレコードをカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。