本指南演示如何使用 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
的唯一非空值。 重复的程序名称将被忽略。 这会产生每种程序类型的不同程序名称的准确计数。
进一步考虑:
DISTINCT
关键字与各种聚合函数兼容,包括 SUM()
、MIN()
和 MAX()
。 与 COUNT()
一起使用时,其功能等同于 COUNT(DISTINCT 1)
或 COUNT(NOT NULL)
。
以上是如何使用 COUNT(DISTINCT) 正确计算 SQL Server 中的不同程序名称?的详细内容。更多信息请关注PHP中文网其他相关文章!