select 记录值 < avg() - 不正确的结果
select records where value < avg() - incorrect results
我正在 NORTHWND db 上做一些基本练习。我想执行以下代码:
SELECT
sum(SaleAmount) AS SaleAmount
, CompanyName
FROM [Sales Totals by Amount]
where [SaleAmount] >
(
Select
avg(SaleAmount) as SaleAmount
from [Sales Totals by Amount]
)
group by CompanyName
平均值等于 4409,4948。当我试图获得大于平均结果的值时,结果是正确的。当我试图获得低于平均值的值时,它 returns 值低于和高于平均值。
如果您指出我的错误在哪里,我将不胜感激。
要将过滤器应用于聚合公式,您可以使用 HAVING
关键字:
SELECT
SUM(SaleAmount) AS SaleAmount,
CompanyName
FROM [Sales Totals by Amount]
GROUP BY CompanyName
HAVING sum(SaleAmount) >
(
Select
AVG(SaleAmount) as SaleAmount
FROM [Sales Totals by Amount]
)
您也可以使用 CTE 解决此问题:
;WITH TotalSalesByCompany AS (
SELECT SUM(SaleAmount) AS TotalSaleAmount,
CompanyName
FROM [Sales Totals by Amount]
GROUP BY CompanyName
)
SELECT *
FROM TotalSalesByCompany
WHERE [TotalSalesAmount] >
(SELECT AVG(SalesAmount) AS AverageSales FROM [Sales Totals By Amount])
CTE 按公司生成总计列表,SELECT 子句选择总销售额大于平均值的每个公司。
我正在 NORTHWND db 上做一些基本练习。我想执行以下代码:
SELECT
sum(SaleAmount) AS SaleAmount
, CompanyName
FROM [Sales Totals by Amount]
where [SaleAmount] >
(
Select
avg(SaleAmount) as SaleAmount
from [Sales Totals by Amount]
)
group by CompanyName
平均值等于 4409,4948。当我试图获得大于平均结果的值时,结果是正确的。当我试图获得低于平均值的值时,它 returns 值低于和高于平均值。 如果您指出我的错误在哪里,我将不胜感激。
要将过滤器应用于聚合公式,您可以使用 HAVING
关键字:
SELECT
SUM(SaleAmount) AS SaleAmount,
CompanyName
FROM [Sales Totals by Amount]
GROUP BY CompanyName
HAVING sum(SaleAmount) >
(
Select
AVG(SaleAmount) as SaleAmount
FROM [Sales Totals by Amount]
)
您也可以使用 CTE 解决此问题:
;WITH TotalSalesByCompany AS (
SELECT SUM(SaleAmount) AS TotalSaleAmount,
CompanyName
FROM [Sales Totals by Amount]
GROUP BY CompanyName
)
SELECT *
FROM TotalSalesByCompany
WHERE [TotalSalesAmount] >
(SELECT AVG(SalesAmount) AS AverageSales FROM [Sales Totals By Amount])
CTE 按公司生成总计列表,SELECT 子句选择总销售额大于平均值的每个公司。