为什么SQL where子句中不允许聚合

时间:2013-10-09 02:39:55

标签: sql where-clause having-clause

SELECT SUM(salary) 
FROM EMPLOYEE 
WHERE SUM(salary) > 10000;

导致错误,我知道它需要放在HAVING子句中。

我的问题是为什么?正如SQL语言设计中这种语法选择的根本原因一样。

1 个答案:

答案 0 :(得分:2)

Where子句过滤查询中的行(之前它们是聚合的)。

有子句在之后过滤行。

即。 Sum,Avg,Count,Max,Min或任何聚合函数始终位于HAVING过滤器中。

'基于行的过滤'在where子句中执行。

这通常包含在标准SQL基础知识中,因此您可能需要阅读一些背景知识,因为这可以帮助您。