MS Access SQL 带小数的平均函数
MS Access SQL Average function with decimals
我正在尝试为一个项目创建一个评级系统,并在表单上显示该项目的所有评级的平均值。我希望评分保留小数点后一位。我想出了下面的代码:
SELECT OvrRate.OvRating, *
FROM tbl1 LEFT JOIN
(SELECT Field1, ROUND(AVG(Rating),1) AS OvRating
FROM tbl_Review GROUP BY Field1) AS OvrRate
ON tbl1.Field1 = OvrRate.Field1;
到目前为止,我的代码可以显示小数点后一位,但当它应该是 5.3 时,它却显示 5.0。所有评论都妥善存储(我认为)。我有一篇评论是5.3,这意味着平均值应该也是5.3,但是就像我上面说的,它不是这样查询的。
有任何修复吗?
MS Access 对整数进行整数运算,因此您需要转换该值。我发现最简单的方法是乘以 1.0:
SELECT OvrRate.OvRating, *
FROM tbl1 LEFT JOIN
(SELECT Field1, ROUND(AVG(Rating*1.0), 1) AS OvRating
FROM tbl_Review
GROUP BY Field1
) AS OvrRate
ON tbl1.Field1 = OvrRate.Field1;
我正在尝试为一个项目创建一个评级系统,并在表单上显示该项目的所有评级的平均值。我希望评分保留小数点后一位。我想出了下面的代码:
SELECT OvrRate.OvRating, *
FROM tbl1 LEFT JOIN
(SELECT Field1, ROUND(AVG(Rating),1) AS OvRating
FROM tbl_Review GROUP BY Field1) AS OvrRate
ON tbl1.Field1 = OvrRate.Field1;
到目前为止,我的代码可以显示小数点后一位,但当它应该是 5.3 时,它却显示 5.0。所有评论都妥善存储(我认为)。我有一篇评论是5.3,这意味着平均值应该也是5.3,但是就像我上面说的,它不是这样查询的。
有任何修复吗?
MS Access 对整数进行整数运算,因此您需要转换该值。我发现最简单的方法是乘以 1.0:
SELECT OvrRate.OvRating, *
FROM tbl1 LEFT JOIN
(SELECT Field1, ROUND(AVG(Rating*1.0), 1) AS OvRating
FROM tbl_Review
GROUP BY Field1
) AS OvrRate
ON tbl1.Field1 = OvrRate.Field1;