2013-11-04 27 views
0

我從http://sqlzoo.net/wiki/SUM_and_COUNT_Quiz#quiz0,第四個人得到了一個問題。我選擇了第二個選項,但結果證明第五個選項是正確的答案。我不知道爲什麼這個sql語句是錯誤的。誰能告訴我原因?先謝謝你。關於在哪裏和羣組的sql錯誤由

SQL語句如下所示:

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

爲什麼回答這個問題是「沒有結果是因爲無效使用WHERE功能」?

+3

您不能在'where'子句中放置聚合函數(如'sum()')。他們屬於'擁有'條款。 –

回答

1

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

對於是有效的,你必須使用GROUP後具有:

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

我們用什麼標準代替WHERE使用HAVING? – cisolarix

+0

當你使用像SUM,COUNT,MIN,MAX這樣的聚合函數。在這些情況下,你不能在WHERE上使用它們,但是在HAVING –

0

要理解爲什麼看一看邏輯查詢處理爲了這大致模樣

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. 選擇
  6. ORDER BY

WHERE到來之前GROUP BY因此,你不能直接使用它聚合函數。這是HAVING子句的用處。