首页 >数据库 >mysql教程 >如何使用 COUNT(DISTINCT) 正确计算 SQL Server 中的不同程序名称?

如何使用 COUNT(DISTINCT) 正确计算 SQL Server 中的不同程序名称?

Linda Hamilton
Linda Hamilton原创
2025-01-14 18:51:43232浏览

How to Correctly Count Distinct Program Names in SQL Server Using COUNT(DISTINCT)?

使用 COUNT(DISTINCT) 计算 SQL Server 中的唯一程序名称

本指南演示如何使用 COUNT(DISTINCT) 聚合函数准确计算 SQL Server 中的唯一程序名称。 我们将研究一个常见的查询问题及其解决方案。

挑战:

考虑一个名为 cm_production 的表,其中包含 ticket_numberprogram_typeprogram_namepush_number 等列。 目标是确定每个 program_typepush_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 的唯一非空值。 重复的程序名称将被忽略。 这会产生每种程序类型的不同程序名称的准确计数。

进一步考虑:

DISTINCT 关键字与各种聚合函数兼容,包括 SUM()MIN()MAX()。 与 COUNT() 一起使用时,其功能等同于 COUNT(DISTINCT 1)COUNT(NOT NULL)

以上是如何使用 COUNT(DISTINCT) 正确计算 SQL Server 中的不同程序名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn