這是一個視圖,顯示每個強盜,他們在監獄裏的年數,所犯的搶劫數量和他們的總收入(21行)。爲什麼HAVING col> AVG(col)沒有返回行?
然後我想創建另一個視圖上面的觀點,以進一步處理數據。我希望我的新視角只顯示劫匪的綽號,他們的NoYears(監獄服役)= 0,其NoRobberies大於平均搶劫數量。
CREATE VIEW ActiveRobbers3
AS
SELECT Nickname
FROM ActiveRobbers2
WHERE NoYears = 0
GROUP BY Nickname, NoRobberies
HAVING NoRobberies > AVG(NoRobberies);
但是,當我嘗試SELECT * FROM ActiveRobbers3
時,這不會返回任何行。誰能看到我的問題?乾杯
avg(NoRobberies)將始終等於此組中的NoRobberies。也請刪除一些標籤(這是mysql或postgresql?) – amdixon
我不得不在我的GROUP BY子句中包含NoRobberies,但是不是嗎?通常我會使用WHERE,但是我不能在where子句中使用聚合函數。 – Rothmanberger
聚合時,非聚合必須在組中 - 是的。儘管你需要做一些查詢並將它們結合在一起來處理這樣一個事實,即你希望所有劫匪的平均值不是每個劫匪的平均值(它總是等於劫匪的數據,因爲每個盜賊似乎有一排) – amdixon