Я пишу запрос, чтобы получить конкретный результат.
Я пробовал использовать команду avg
. Я не могу понять, как использовать вывод, чтобы найти разницу между общими значениями и средним значением.
select ProductID,ProductDescription,StandardPrice
from PRODUCT_TBL
select AVG(StandardPrice) as AveragePrice
from PRODUCT_TBL
Я ожидал, что результат будет средним из всех значений, которые я получил. Это просто найти разницу между начальными значениями и средним значением.
Если вы хотите найти разницу между стандартной ценой данной строки и средней таблицей, вы можете попробовать использовать AVG
в качестве аналитической функции:
SELECT
ProductID,
ProductDescription,
StandardPrice,
AVG(StandardPrice) OVER () AS AvgStandardPrice,
StandardPrice - AVG(StandardPrice) OVER () AS Difference
FROM PRODUCT_TBL;
У вас есть возможность использовать подзапрос для получения среднего
SELECT
ProductID,
ProductDescription,
StandardPrice,
StandardPrice - (SELECT AVG(StandardPrice) FROM PRODUCT_TBL) AS Difference
FROM PRODUCT_TBL;
Мы можем достичь желаемого набора результатов двумя различными способами, указанными ниже.
Использование внутреннего запроса
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