DISTINCTでCOUNT(*)を選択する 質問する

DISTINCTでCOUNT(*)を選択する 質問する

cm_productionSQL Server 2005 には、運用環境に導入されたすべてのコードをリストするテーブルがあります。テーブルにはticket_number、、、および他のいくつかの列がprogram_typeあります。program_namepush_number

目標: プログラム タイプとプッシュ番号ごとにすべての異なるプログラム名をカウントします。

これまでのところ、次のものがあります:

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

これで途中までは到達しましたが、すべてのプログラム名がカウントされており、個別のプログラム名はカウントされていません (このクエリでは、個別のプログラム名はカウントされないと予想しています)。個別のプログラム名を選択せず​​に、個別のプログラム名のみをカウントするように指示する方法が、私には理解できないようです。

ベストアンサー1

プログラムタイプとプッシュ番号ごとにすべての異なるプログラム名を数えます

SELECT program_type  AS [Type],
       Count(DISTINCT program_name) AS [Count],
FROM   cm_production
WHERE  push_number = @push_number
GROUP  BY program_type 

DISTINCT COUNT(*)それぞれのユニークカウントの行を返します。必要なのはCOUNT(DISTINCT <expression>): グループ内の各行の式を評価し、一意の null 以外の値の数を返します。

おすすめ記事