CustomerID,是独一无二的。
这个问题给出了什么结果?
SELECT personalnumber,
Amount = Count(CustomerID),
FROM Customer
GROUP BY personalnumber
HAVING Count(CustomerID) > 100
计数(CustomerID)> 100是什么意思?是否CustomerID必须高于100?
您已经获得了两个答案,但现在您已经编辑了您的请求而未接受其中一个。所以我猜你到目前为止还没有理解答案。
GROUP BY personalnumber
表示您希望每个personalnumber
有一个结果行。一个personalnumber
的所有记录汇总到一行。
Count(CustomerID)
计算CustomerID
不为空的所有出现次数。
HAVING Count(CustomerID) > 100
将你的结果限制为那些personalnumber
有超过100条记录的CustomerID
。
由于这是Customer
表,我们必须假设CustomerID
是表的ID,唯一标识记录,并且它不能为空。
所以这最好写成
HAVING Count(*) > 100
含义相同:将结果限制在超过100条记录中出现的那些personalnumber
。 (Count(*)
表示:计算行数。)
这意味着personalnumber
有超过100个相关的CustomerID
这意味着查询返回的personalnumber
s超过100行,其中CustomerId
不为null。
如果代码只想计算行数,我会建议:
having count(*) > 100
这不取决于色谱柱的可空性。
如果可以复制customerid
并且您想要检查100个不同的值,那么您将使用:
having count(distinct CustomerId) > 100
如果你在CustomerId
上过滤,你会在where
之前使用group by
子句。