このガイドでは、COUNT(DISTINCT)
集計関数を使用して SQL Server 内で一意のプログラム名を正確にカウントする方法を説明します。 一般的なクエリの問題とその解決策を検討します。
課題:
cm_production
、ticket_number
、program_type
、program_name
などの列を含む push_number
という名前のテーブルについて考えます。 目標は、program_type
と push_number
ごとに異なるプログラム名の数を決定することです。 最初の試行は次のようになります:
<code class="language-sql">DECLARE @push_number INT; SET @push_number = [HERE_ADD_NUMBER]; SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type</code>
ただし、このクエリでは一意のプログラム名の正確な数は得られません。
解決策:
正しいアプローチには、COUNT(DISTINCT)
:
<code class="language-sql">SELECT program_type AS [Type], COUNT(DISTINCT program_name) AS [Count] FROM cm_production WHERE push_number = @push_number GROUP BY program_type</code>
説明:
COUNT(DISTINCT program_name)
は、各 program_name
グループ内の program_type
の null 以外の一意の値のみをカウントします。 重複するプログラム名は無視されます。 これにより、プログラムの種類ごとに個別のプログラム名の正確な数が得られます。
さらなる考慮事項:
DISTINCT
キーワードは、SUM()
、MIN()
、MAX()
などのさまざまな集計関数と互換性があります。 COUNT()
と一緒に使用すると、機能的には COUNT(DISTINCT 1)
または COUNT(NOT NULL)
と同等になります。
以上がCOUNT(DISTINCT) を使用して SQL Server で異なるプログラム名を正しくカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。