我从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函数而没有结果”?
答案 0 :(得分:1)
您不能在WHERE子句中使用SUM(区域)。
为了使其有效,你必须在GROUP BY之后使用HAVING:
SELECT region, SUM(area) FROM bbc GROUP BY region HAVING SUM(area) > 15000000;
答案 1 :(得分:1)
要理解为什么要看一下大致看起来像
的逻辑查询处理顺序 WHERE
出现在GROUP BY
之前,因此您无法直接在其中使用聚合函数。这是HAVING
子句的用途。
答案 2 :(得分:0)
WHERE
对未汇总的数据(即之前 GROUP BY
)进行操作。 HAVING
用于聚合数据,即之后 GROUP BY
。