微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MS Access四舍五入精度与分组依据

如何解决MS Access四舍五入精度与分组依据

如果每个月的rawscore员工人数不同,那将使您的结果发生偏差。

考虑以下示例:如果我们计算数字1到10的平均值,则平均值为5.5。

计算从1到5的数字的平均值,平均值是3,从6到10的平均值是8。两组都有5个项目,所以3和8的平均值= 5.5。

但是,如果您将第一个平均值作为1和2 = 1.5,而将第二个平均值作为3到10 = 6.5,则平均值1.5和6.5给出4。这是歪斜的,因为第一组有2个项目,第二组有8个项目。

除此之外,罗伯特·哈维(Robert Harvey)指出,四舍五入的累积效应。

解决方法

为什么将每个员工的平均分数求和时不等于(曾经)的员工平均数?

平均

SELECT Avg(r.score) AS rawScore
FROM (ET INNER JOIN Employee AS e ON ET.employeeId = e.id) INNER JOIN (Employee AS a INNER JOIN Review AS r ON a.id = r.employeeId) ON ET.id = r.ETId
WHERE (((e.id)=@employeeId))

返回 80.737


每月平均值

SELECT Avg(r.score) AS rawScore,Format(submitDate,'mmm yy') AS MonthText,month(r.submitDate) as mm,year(submitDate) as yy
FROM (ET INNER JOIN Employee AS e ON ET.employeeId = e.id) INNER JOIN (Employee AS a INNER JOIN Review AS r ON a.id = r.employeeId) ON ET.id = r.ETId
WHERE (((e.id)=@employeeId))
GROUP BY month(r.submitDate),year(submitDate),'mmm yy')
ORDER BY year(submitDate) DESC,month(r.submitDate) DESC

退货

Average Score : Month 
81.000 : Oct 09 
80.375 : Sep 09 
82.700 : Aug 09 
83.100 : Jul 09 
75.625 : Jun 09

我知道80.737是正确的,因为我手工计算了记录并进行了平均。但是此表的平均值(小数点后3位)为80.56,相差太远。是否在每一步都弄乱了四舍五入?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。