2013-10-09 23 views
-2
SELECT SUM(salary) 
FROM EMPLOYEE 
WHERE SUM(salary) > 10000; 

導致錯誤,我知道它需要被放在HAVING子句。爲什麼聚合不允許在SQL條款

我的問題是爲什麼?正如在SQL語言設計中選擇此語法的根本原因一樣。

+0

無論語法如何,您的查詢都沒有意義。那個查詢返回什麼?你想達到什麼目的? –

+0

該查詢僅作爲示例。不是一個真正的問題,只是爲了更好地解釋我的問題,而不是說一些「只是使用」 – Abe

回答

2

WHERE子句中的查詢篩選行(之前,他們聚集)。

HAVING子句過濾行後,他們已經彙總。

即Sum,Avg,Count,Max,Min或任何聚合函數始終處於HAVING過濾器中。

「行基於濾波」被where子句中進行。

這通常是覆蓋在標準SQL基本知識,所以你可能需要閱讀一些背景,因爲這可以幫助你。