SQL计数有

时间:2018-03-18 01:41:41

标签: sql tsql

CustomerID,是独一无二的。

这个问题给出了什么结果?

SELECT personalnumber, 
   Amount = Count(CustomerID), 
FROM   Customer
GROUP  BY personalnumber 
HAVING Count(CustomerID) > 100     

这是什么意思 有计数(CustomerID)> 100?是否CustomerID必须高于100?

3 个答案:

答案 0 :(得分:2)

您已经获得了两个答案,但现在您已经编辑了您的请求而未接受其中一个。所以我猜你到目前为止还没有理解答案。

GROUP BY personalnumber

表示每个personalnumber需要一个结果行。一个personalnumber的所有记录都汇总到一行。

Count(CustomerID)

计算CustomerID不为空的所有事件。

HAVING Count(CustomerID) > 100   

将结果限制为具有personalnumber的记录超过100条的CustomerID

由于这是Customer表,我们必须假设CustomerID是表的ID,唯一标识记录,并且不能为空。

所以这最好写成

HAVING Count(*) > 100   

意思相同:将结果限制为超过100条记录中出现的personalnumber。 (Count(*)表示:计算行数。)

答案 1 :(得分:1)

这意味着personalnumber有超过100个关联CustomerID

答案 2 :(得分:1)

这意味着查询返回的personalnumber位于100多行,其中CustomerId不为空。

如果代码只想计算行数,我建议:

having count(*) > 100

这不取决于色谱柱的可空性。

如果customerid可以重复,并且您想要检查100个不同的值,那么您将使用:

having count(distinct CustomerId) > 100

如果您要对CustomerId进行过滤,则可以在where之前使用group by子句。