0

我从第四个http://sqlzoo.net/wiki/SUM_and_COUNT_Quiz#quiz0收到了一个问题。我选择了第二个选项,但事实证明第五个选项是正确的答案。我不知道为什么这个sql语句是错误的。谁能告诉我原因?先感谢您。

sql语句如下图:

SELECT region, SUM(area)
FROM bbc 
WHERE SUM(area) > 15000000 
GROUP BY region

为什么这个问题的答案是“由于无效使用 WHERE 函数而没有结果”?

4

3 回答 3

1

您不能在 WHERE 子句中使用 SUM(area)。

为此,您必须在 GROUP BY 之后使用 HAVING:

SELECT region, SUM(area) FROM bbc GROUP BY region HAVING SUM(area) > 15000000;
于 2013-11-04T02:14:21.097 回答
1

要了解为什么看一下大致看起来像的逻辑查询处理顺序

  1. 在哪里
  2. 通过...分组
  3. 拥有
  4. 选择
  5. 订购方式

WHERE出现在前面,GROUP BY因此您不能直接在其中使用聚合函数。这就是该HAVING条款的用途。

于 2013-11-04T02:24:17.480 回答
0

WHERE对非聚合数据进行操作,即before GROUP BYHAVING旨在用于聚合数据,即after GROUP BY

于 2019-01-01T18:34:54.583 回答