1. ホーム
  2. sql

[解決済み] DISTINCTでCOUNT(*)を選択する

2022-03-19 04:06:37

質問

SQL Server 2005 にテーブルがあります。 cm_production このリストには、実運用に移されたすべてのコードが含まれています。このテーブルには ticket_number , program_type , program_namepush_number を他のカラムと一緒に表示します。

ゴール プログラムの種類とプッシュ番号で、すべてのDISTINCTプログラム名をカウントします。

今のところあるのは

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

しかし、これはすべてのプログラム名をカウントしているのであって、個別のプログラム名をカウントしているわけではありません(このクエリではそうなるとは思っていません)。私は、プログラム名を選択することなく、異なるプログラム名だけを数えるように指示する方法を理解することができません。とかなんとか。

どのように解決するのですか?

<ブロッククオート

プログラムの種類とプッシュ番号で、すべてのDISTINCTプログラム名をカウントします。

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

DISTINCT COUNT(*) は、ユニークカウントごとに行を返します。あなたが欲しいのは COUNT(DISTINCT <expression>) : グループの各行に対して式を評価し、ユニークで非NULLの値の数を返します。