SELECT SUM(salary)
FROM EMPLOYEE
WHERE SUM(salary) > 10000;
导致错误,我知道它需要放在HAVING
子句中。
我的问题是为什么?正如SQL语言设计中这种语法选择的根本原因一样。
答案 0 :(得分:2)
Where子句过滤查询中的行(之前它们是聚合的)。
有子句在之后过滤行。
即。 Sum,Avg,Count,Max,Min或任何聚合函数始终位于HAVING过滤器中。
'基于行的过滤'在where子句中执行。
这通常包含在标准SQL基础知识中,因此您可能需要阅读一些背景知识,因为这可以帮助您。