2011-02-16 79 views
3

我有一張包含產品,金額和價格的表格。我需要選擇每件商品的平均價格在一定範圍內的所有條目。 到目前爲止,我查詢:具有計算值的條件的SQL

SELECT productid,AVG(SUM(price)/SUM(amount)) AS avg 
FROM stock WHERE avg>=$from AND avg<=$to GROUP BY productid 

如果做到這一點,它告訴我的魅力不存在。 另外,我顯然需要分組,因爲總和平均需要每酒

+0

你想在這裏做什麼? `AVG(SUM(價格)/ SUM(金額))` – 2011-02-16 15:28:33

回答

3

你需要把它放在HAVING條款。您無法使用WHERE的聚合結果進行過濾。

MySQL允許您引用HAVING中的列別名。您可能需要

SELECT 
     productid, 
     AVG(price/amount) AS avg , 
     /*SUM(price)/SUM(amount) AS avg (<--- Or perhaps this?)*/ 
FROM stock 
GROUP BY productid 
HAVING avg>=$from AND avg<=$to 

但我不知道到底是什麼你想您能不能告訴一些示例數據與AVG(SUM(price)/SUM(amount))辦?

+0

Ahhhh,是的,它與HAVING合作,謝謝。 – lawl0r 2011-02-16 15:36:35