1

1 つのクエリで、平均価格よりも高い商品と低い商品の数を取得しようとしています。

私のクエリ:

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 clause' に Unknown column 'price' というエラーが表示されます

SELECT で 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 のリンクはこちら

4

2 に答える 2

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
于 2012-07-23T11:16:18.860 に答える
-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))

于 2012-07-23T10:50:56.170 に答える