sql—与GROUPBY一起使用的平均值与子查询中的直接平均值有何不同?

h7wcgrx3  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(557)

有人能帮我做下面的事吗?

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给出不同的结果?我只是想让问题变得简单。GROUPBY子句的使用在这里有什么不同?当我在不同的查询中运行sum时,得到的值是相同的,我不确定这里平均值的计算方式是如何不同的。

wpcxdonn

wpcxdonn1#

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

code     value
 A         1
 A         1
 A         4
 B         4

总体平均值仅为2.5--(1+1+4+4)/4。
如果我们先按代码聚合,然后取平均值,我们得到:

code     average
  A         2
  B         4

这两行的平均值是3,相差很大。
简单地说:聚合数据的平均值可能与总体平均值有很大不同。

相关问题