使用 DISTINCT 选择 COUNT(*)。

发布时间 2023-11-13 15:01:20作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=使用 DISTINCT 选择 COUNT(*)。

在SQL Server 2005中,我有一个名为cm_production的表,列出了所有投入生产的代码。该表具有ticket_numberprogram_typeprogram_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

这让我走了一半路程,但它正在计算所有程序名称,而不是独特的名称(我不指望在那个查询中做到这一点)。我想我无法理解如何告诉它仅计算不同的程序名称,而不选择它们。或者说我对如何实现这一点感到困惑。


按程序类型和推送号计算所有不同的程序名称的数量

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>):对每个组中的行评估表达式,并返回唯一的非空值的数量。