SQL似乎会在select语句中自动将数字取整?
嗨,这是我的SQL代码:SQL似乎会在select语句中自动将数字取整?,sql,Sql,嗨,这是我的SQL代码: SELECT a."Date", a."Missed", b."Total Client Schedules", cast(100-((a."Missed"*100) / b."Total Client Schedules")AS decimal) as "Pct Completed" - FROM - ( - SELECT DATE(scheduled_start) as "Date",count(*) as "Missed" FROM -
SELECT a."Date", a."Missed", b."Total Client Schedules", cast(100-((a."Missed"*100) / b."Total Client Schedules")AS decimal) as "Pct Completed" -
FROM -
( -
SELECT DATE(scheduled_start) as "Date",count(*) as "Missed" FROM -
events WHERE node_name IS NOT NULL AND status IN ('Missed') GROUP BY DATE(scheduled_start) -
) as a, -
( -
SELECT DATE(scheduled_start) as "Date", count(*) as -
"Total Client Schedules" FROM events WHERE node_name IS NOT NULL GROUP BY DATE(scheduled_start) -
) as b -
WHERE a."Date" = b."Date" ORDER BY "Date" desc
这是输出
Date Missed Total Client Schedules Pct Completed
----------- ------------ ----------------------- --------------
2013-02-20 2 805 100
2013-02-19 14 805 99
2013-02-18 29 805 97
2013-02-17 59 805 93
2013-02-16 29 806 97
2013-02-15 49 805 94
2013-02-14 33 805 96
2013-02-13 57 805 93
2013-02-12 21 805 98
2013-02-11 35 805 96
2013-02-10 34 805 96
当我希望它是99.99%或97.2%等时,它似乎总是四舍五入到最高的数字。您没有指定要使用的数据库。但是,有些数据库执行整数运算,因此1/2是0而不是0.5 要解决此问题,只需将使用的常量设为数字而不是整数:
cast(100.0-((a."Missed"*100.0) / b."Total Client Schedules")AS decimal)
然后,它将转换为非整数类型以进行算术运算。这似乎不起作用。我使用的是IBM TSM数据库,所以这可能不太可能:(好吧,它已经工作了,现在我将它改为舍入(100.0-((a.“Missed”*100.0)/b.“Total Client Schedules”),2),但是现在这个数字显示为99.7500000000000000,所以我只需要去掉所有的0:DTry,比如演员组的
decimal(6,2)
。