Как найти среднее значение в SQL, используя среднее значение, чтобы найти разницу между начальными значениями данных и средним - PullRequest
1 голос
/ 09 апреля 2019

Я пишу запрос, чтобы получить определенный вывод.

Я пытался использовать команду avg.Я не могу понять, как использовать выходные данные, чтобы найти разницу между итоговыми значениями и средними значениями.

select ProductID,ProductDescription,StandardPrice
from PRODUCT_TBL

select AVG(StandardPrice) as AveragePrice
from PRODUCT_TBL

Я ожидал, что результат будет средним из всех значений, которые я получил.Это просто найти разницу между начальными и средними значениями.

Ответы [ 3 ]

5 голосов
/ 09 апреля 2019

Если вы хотите найти разницу между стандартной ценой данной строки и средней таблицей, вы можете попробовать использовать AVG в качестве аналитической функции:

SELECT
    ProductID,
    ProductDescription,
    StandardPrice,
    AVG(StandardPrice) OVER () AS AvgStandardPrice,
    StandardPrice - AVG(StandardPrice) OVER () AS Difference
FROM PRODUCT_TBL;
0 голосов
/ 09 апреля 2019

Мы можем получить желаемый результат двумя различными способами, указанными ниже.

  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
0 голосов
/ 09 апреля 2019

У вас есть возможность использовать подзапрос, чтобы получить среднее значение

SELECT
    ProductID,
    ProductDescription,
    StandardPrice,
    StandardPrice - (SELECT AVG(StandardPrice) FROM PRODUCT_TBL) AS Difference
FROM PRODUCT_TBL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...