繁体   English   中英

删除 SQL 中的小数位

[英]remove decimal Place in SQL

代码:

days_between("Created Time","Locked Time")*24

结果数据库表:

Avg Response time (Hours)   
2.91                        
6.00                        
9.13                        
3.65                        
1.17                        
0.00                        
0.77                       
32.47                   

上表是我在代码之后得到的结果,但现在我想删除所有小数位,那么我该怎么做。 我尝试使用 cast 和 round () 但不工作。 有人可以帮忙吗。 谢谢

尝试代码:days_between("Created Time","Locked Time")*24, 0) AS INT ) AS Response_Time

根据您的样本数据,我猜:

with t(d) as ( 
    values (2.91), (6.00), (9.13), (3.65), (1.17), (0.00), (0.77), (32.47)
)
select d, cast(d/24 as decimal(5,2)) from t;

我在 MSSQL 上运行了一个类似的查询,我可以这样做:

SELECT TOP 10 a.SizeBytes AS originalValue
                ,COALESCE(a.SizeBytes, 0.00) / (1024 * 1024) AS defaultOperation
                ,CAST(COALESCE(a.SizeBytes, 0.00) / (1024 * 1024) AS INT) AS withCast
                ,FLOOR(COALESCE(a.SizeBytes, 0.00) / (1024 * 1024)) AS withFloor
                ,ROUND(COALESCE(a.SizeBytes, 0.00) / (1024 * 1024), 0) AS withRound
FROM filesUploaded a
WHERE a.SizeBytes > 0

导致: 查询结果

请注意,我将查询限制在前 10 名,以加快生成此示例的速度,因为我的表包含数百万行。

我的起始值也是 integer,所以我必须添加小数才能看到小数。 可能您不需要这样做,因为平均值应该已经有小数,但在我的情况下,仅除法返回 integer 的除法结果,而在除法之前不使用COALESCE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM