有人能帮我做下面的事吗?
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时,得到的值是相同的,我不确定这里平均值的计算方式是如何不同的。
1条答案
按热度按时间wpcxdonn1#
这是加权平均数和简单平均数之间的差别。考虑这个简单的例子:
总体平均值仅为2.5--(1+1+4+4)/4。
如果我们先按代码聚合,然后取平均值,我们得到:
这两行的平均值是3,相差很大。
简单地说:聚合数据的平均值可能与总体平均值有很大不同。