为什么结果取决于having子句

时间:2015-02-23 02:30:32

标签: sql sql-server sql-server-2008-r2

我无法理解为什么表clients中的结果为空的原因如下:

SELECT SUM(clients.age), COUNT(*)
FROM clients

返回

null0

但是当我添加条款

GROUP BY clients.age

它返回空

我无法理解GROUP BY影响结果的方式,因为我理解GROUP BYSELECT之前执行。

1 个答案:

答案 0 :(得分:3)

GROUP BY的查询请求每个不同clients.age包含一行的结果集。由于没有任何clients.age值,因此返回0行。如果没有GROUP BY,查询将请求包含整个表的聚合的一行。由于请求了一个摘要行,因此无论表是否为空,都会返回该行。