T-SQL Count返回所有记录而不是Subset

时间:2012-05-30 03:00:16

标签: tsql

试图找出这个愚蠢的语法问题

select distinct Count(Mgr) from CarsManager

返回所有记录。应该是子集计数。

2 个答案:

答案 0 :(得分:1)

Select Mgr, Count(*)
From CarsManager
Group By Mgr

您未指定应进行子集计数的内容。举个例子,我认为它是Mgr列。

如果您寻求的是一系列独特的经理人,那么您可以这样做:

Select Count(Distinct Mgr)
From CarsManager

Count(*)和Count(SomeColumn)

之间的差异

在评论中,您询问了Count(*)Count(SomeCol)之间的区别。差异不在于性能而在于逻辑。无论列如何,Count(*)都会对行进行计数。 Count(SomeCol)在SomeCol中计算非null 值。

COUNT (Transact-SQL)

  
    

COUNT(ALL表达式)计算组中每一行的表达式,并返回非空值的数量。

  

Count(SomeCol)的情况下,隐含ALL

答案 1 :(得分:0)

你无法一次性完成这一切 - 你需要一个子查询:

SELECT count(*) FROM (SELECT DISTINCT Mgr FROM CarsManager) as tbl1