如何在SQL中查找平均值,同时使用平均值查找初始数据值和平均值之间的差

时间:2019-04-09 04:47:02

标签: sql sql-server ssms

我正在编写查询以获取特定的输出。

我尝试使用avg命令。我无法弄清楚如何使用输出来找到总值和平均值之间的差异。

select ProductID,ProductDescription,StandardPrice
from PRODUCT_TBL

select AVG(StandardPrice) as AveragePrice
from PRODUCT_TBL

我希望输出结果是所有值的平均值。只是找到初始值和平均值之间的差异。

3 个答案:

答案 0 :(得分:5)

如果要查找给定行的标准价格和表的平均值之间的差额,可以尝试使用AVG作为分析函数:

SELECT
    ProductID,
    ProductDescription,
    StandardPrice,
    AVG(StandardPrice) OVER () AS AvgStandardPrice,
    StandardPrice - AVG(StandardPrice) OVER () AS Difference
FROM PRODUCT_TBL;

答案 1 :(得分:0)

您可以选择使用子查询来获取平均值

SELECT
    ProductID,
    ProductDescription,
    StandardPrice,
    StandardPrice - (SELECT AVG(StandardPrice) FROM PRODUCT_TBL) AS Difference
FROM PRODUCT_TBL;

答案 2 :(得分:0)

我们可以通过以下两种不同的方式来获得所需的结果集。

  1. 使用内部查询

    SELECT ID, NAME, PRICE, 
    (SELECT AVG(PRICE) FROM #A ) AS AVGSTANDARDPRICE, 
    (PRICE - ( SELECT AVG(PRICE) FROM #A )) AS DIFFRENCE 
    FROM #A 
    

2。使用预定义的计算平均价格。

 DECLARE @AVGPRICE MONEY
 SET @AVGPRICE = ( SELECT AVG(ISNULL(PRICE,0)) FROM #A )    
 SELECT ID,
 NAME,
 PRICE,
 @AVGPRICE AS AVGSTANDARDPRICE,    
 (PRICE - @AVGPRICE ) AS DIFFRENCE
 FROM #A