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

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

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

4

1 回答 1

2

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

有子句在聚合后过滤行。

即 Sum、Avg、Count、Max、Min 或任何聚合函数总是在 HAVING 过滤器中。

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

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

于 2013-10-09T02:57:33.163 回答