我的查询是这样的...
SELECT
ClientId,
AVG(Rate)
FROM
Clients
GROUP BY
ClientId
WITH ROLLUP
这给出了...
NULL, 17.5769
1, 16.75
2, 17.50
3, 18.50
4, 17.50
5, 18.50
这是错误的平均值。应该是 17.75。
这个查询有什么问题?
最佳答案
您误解了平均值的计算方式。如果您要计算组平均值的平均值
,您将看到您期望的17.75
:
select ClientID
,avg(Rate) as AvgRate
from (values(1, 16.75)
,(2, 17.50)
,(3, 18.50)
,(4, 17.50)
,(5, 18.50)
) as r(ClientID, Rate)
group by ClientID
with rollup;
输出
+----------+-----------+
| ClientID | AvgRate |
+----------+-----------+
| 1 | 16.750000 |
| 2 | 17.500000 |
| 3 | 18.500000 |
| 4 | 17.500000 |
| 5 | 18.500000 |
| NULL | 17.750000 |
+----------+-----------+
因为您使用的是汇总
,所以它(正确地)计算整个数据集的平均值作为您的总值(value),这不是与计算组平均值的平均值相同。
关于sql-server - 组的平均值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855276/