平均值与分组依据的结合与子查询中的直接平均值有何不同?

How is average value in conjunction with group by is different from straightforward average in subquery?

谁能帮我解决以下问题?

SELECT SalesOrderID, SUM (LineTotal) AS TotalSales
FROM SALES.SalesOrderDetail
GROUP BY SalesOrderID
HAVING SUM (LineTotal)>
--query1
(
SELECT AVG (SumCalc.SumValues)
FROM (SELECT SUM(LineTotal) AS SumValues
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
) AS SumCalc

)

---查询2

SELECT AVG (LineTotal)
FROM SALES.SalesOrderDetail

为什么查询 1 和查询 2 给出不同的结果?我只是想让查询 1 变得简单。 GROUP BY 子句的使用在这里有何不同?当我 运行 不同查询中的总和值变得相同时,我不确定这里计算 avg 的方式是如何不同的。

这是加权平均数和简单平均数的区别。考虑这个简单的例子:

code     value
 A         1
 A         1
 A         4
 B         4

总体平均值仅为 2.5 -- (1 + 1 + 4 + 4) / 4。

如果先按代码聚合,再取平均值,则有:

code     average
  A         2
  B         4

这两行的平均值是3,相差很大

简而言之:聚合数据的平均值可能与总体平均值有很大差异。