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

问题描述 投票:1回答:3

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

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

select ProductID,ProductDescription,StandardPrice
from PRODUCT_TBL

select AVG(StandardPrice) as AveragePrice
from PRODUCT_TBL

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

sql sql-server ssms
3个回答
5
投票

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

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

0
投票

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

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

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
© www.soinside.com 2019 - 2024. All rights reserved.