我想要从一系列物体中找到平均价格,然后选择落在该平均范围的公差范围内的物体,例如 用品表。
food price
-------------
'fish' $1
'bread' $2
'eggs' $3
'coffee' $4
'bananas' $5
这里的平均价格是3美元。我怎么样。
SELECT food FROM SUPPLIES
WHERE food BETWEEN AVG(PRICE)-$1 AND AVG(PRICE)+$1
我在公式上尝试过的大多数变体表明无效使用组功能。我也用'HAVING'代替'WHERE'而没有运气。
答案 0 :(得分:2)
无法在Aggregate
子句中使用WHERE
函数。因此,您必须使用Sub query
来获取平均价格。我假设价格在您的数据库中存储为decimal
。试试这样的事情,
DECLARE @table TABLE(food VARCHAR(20), price DECIMAL(18,2))
INSERT INTO @table
select 'fish', 1 union
select 'bread', 2 union
select 'eggs', 3 union
select 'coffee', 4 union
select 'bananas', 5
SELECT food FROM @table
WHERE price BETWEEN
(
SELECT AVG(PRICE)-1 FROM @table
)
AND
(
SELECT AVG(PRICE)+1 FROM @table
)
希望这有帮助。