选择平均值范围内的值

时间:2015-03-13 05:24:43

标签: sql

我想要从一系列物体中找到平均价格,然后选择落在该平均范围的公差范围内的物体,例如 用品表。

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'而没有运气。

1 个答案:

答案 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  
)

希望这有帮助。