2012-07-23 43 views
1

想要在一個查詢中獲得多少物品的價格高於平均價格和更低。Mysql聚合函數。平均價格和物品價格

我的查詢:

SELECT COUNT(*) 
FROM item i 
WHERE refine = 0 AND item = 5170 
GROUP BY id 
HAVING price > AVG(price) - STD(price) AND i.price < AVG(price) + STD(price) 

,但我得到的錯誤未知列'價格 'having子句'

中如果我使用AVG和STD功能選擇:

SELECT COUNT(*), SUM(price > AVG(price) - STD(price) AND i.price < AVG(price) + STD(price)) as middle 
FROM item i 
WHERE refine = 0 AND item = 5170 

我再次收到錯誤消息。如何進行正確的查詢?

這裏就sqlFiddle

+2

你能提供有關[SQLFiddle(HTTP的例子:// sqlfiddle.com)? – 2012-07-23 10:57:05

+0

感謝您鏈接到SQLFiddle,漂亮的工具)我添加了鏈接到帖子。 – user1081056 2012-07-23 11:05:08

+0

您不能用另一個聚合包裝聚合。 – 2012-07-23 11:09:51

回答

2

試試這個

select count(*) from item as t1 inner join 
(
select id,AVG(price) - STD(price) as sum1, AVG(price) + STD(price) as sum2 
from item 
group by id 
) as t2 
on t1.id=t2.id and t1.price>sum1 and t1.price<sum2 
+0

我已經添加了一些小修改此查詢,但這個想法對我有用。謝謝;) – user1081056 2012-07-23 11:33:36

+0

歡迎:) – Madhivanan 2012-07-23 12:20:18

-1
SELECT COUNT(*), SUM(price > AVG(price)) - STD(price) AND i.price < AVG(price) + STD(price)) as middle 
FROM item i WHERE refine = 0 AND item = 5170 

你忘了 「)」 鏈接 - >SUM(price > AVG(price))

相關問題