关于where和group by的sql错误

时间:2013-11-04 02:12:41

标签: sql

我从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函数而没有结果”?

3 个答案:

答案 0 :(得分:1)

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

为了使其有效,你必须在GROUP BY之后使用HAVING:

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

答案 1 :(得分:1)

要理解为什么要看一下大致看起来像

的逻辑查询处理顺序
  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. 选择
  6. ORDER BY
  7. WHERE出现在GROUP BY之前,因此您无法直接在其中使用聚合函数。这是HAVING子句的用途。

答案 2 :(得分:0)

WHERE对未汇总的数据(即之前 GROUP BY)进行操作。 HAVING用于聚合数据,即之后 GROUP BY