sql-server - 组的平均值不正确
问题描述
我的查询是这样的...
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。
这个查询有什么问题?
解决方案
您误解了平均值是如何计算的。如果您要计算一个avg
组平均值,您会看到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 |
+----------+-----------+
因为您正在使用with rollup
它(正确地)为您的总值计算整个数据集的平均值,这与计算组平均值的平均值不同。
推荐阅读
- laravel - 使用 VueJS 更新后重新计算函数
- c# - 具有多个左外连接的 Linq 查询失败
- amazon-web-services - 请求 Internet 资源时 AWS Lambda 超时
- angular - 带有自定义类型的角度单元测试给出了找不到命名空间
- vba - refresh word document
- php - 如何检查序列是否存在
- android - VS Code: 未能安装以下 Android SDK 包,因为某些许可证尚未被接受
- angular - Nginx 生产环境中的 Angular 9 应用程序出错
- mongodb - 如何在选定的时间范围内返回每个月的计数
- flutter - Is it possible to download and execute an uncompiled dart file (Flutter)