我从第四个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 函数而没有结果”?
我从第四个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 函数而没有结果”?
您不能在 WHERE 子句中使用 SUM(area)。
为此,您必须在 GROUP BY 之后使用 HAVING:
SELECT region, SUM(area) FROM bbc GROUP BY region HAVING SUM(area) > 15000000;
要了解为什么看一下大致看起来像的逻辑查询处理顺序
WHERE
出现在前面,GROUP BY
因此您不能直接在其中使用聚合函数。这就是该HAVING
条款的用途。
WHERE
对非聚合数据进行操作,即before GROUP BY
。HAVING
旨在用于聚合数据,即after GROUP BY
。