SQL计数有

问题描述 投票:1回答:3

CustomerID,是独一无二的。

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

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

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

sql tsql
3个回答
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
投票

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


1
投票

这意味着查询返回的personalnumbers超过100行,其中CustomerId不为null。

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

having count(*) > 100

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

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

having count(distinct CustomerId) > 100

如果你在CustomerId上过滤,你会在where之前使用group by子句。

© www.soinside.com 2019 - 2024. All rights reserved.