作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑这个查询:
WITH Scores (score)
AS
(
SELECT CAST(score AS INTEGER)
FROM (
VALUES (0),
(10),
(10)
) AS Scores (score)
)
SELECT AVG(CAST(score AS DECIMAL(19, 8))) AS precision_eight,
AVG(CAST(score AS DECIMAL(19, 7))) AS precision_seven,
AVG(CAST(score AS DECIMAL(19, 6))) AS precision_six,
AVG(CAST(score AS DECIMAL(19, 5))) AS precision_five,
AVG(CAST(score AS DECIMAL(19, 4))) AS precision_four
FROM Scores;
结果:
precision_eight | precision_seven | precision_six | precision_five | precision_four
6.66666666 | 6.6666666 | 6.666666 | 6.666666 | 6.666666
为什么我总是得到至少六位小数?这是有记录的行为吗?
(我正在运行 SQL Server 2008)
最佳答案
小数的 AVG 始终返回“decimal(38, s) 除以decimal(10, 0)”数据类型 ( see here )
您必须将 AVG 结果转换为所需的精度。
关于sql - 为什么将 AVG(intger_column) 转换为 DECIMAL 返回至少六位小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943265/
考虑这个查询: WITH Scores (score) AS ( SELECT CAST(score AS INTEGER) FROM (
我是一名优秀的程序员,十分优秀!