我在这里看了一些答案,但我一直陷入困境。我是一个全新的初学者。
我有一个简单的选择语句
SELECT (100.0*(CURRENRL)/(CAPACITY)) AS "OCCUPANCY RATE"
FROM COURSE, LOCATION
WHERE LOCATION.LOCID=COURSE.LOCID
返回一列
90.000000000000
100.000000000000
80.000000000000
100.000000000000
100.000000000000
59.523809523809
66.666666666666
28.571428571428
76.190476190476
83.333333333333
23.333333333333
我只是想绕到最接近的整数。
这样我输出如下:
90
100
80
100
100
60
67
...
我尝试过使用ROUND和CAST,但每次都会出错。如果有必要,我可以发布错误,但我的猜测是这应该很简单,而且我错过了一些格式或类似于我在这里看到的其他问题。
如果我这样做:
ROUND(100.0*(CURRENRL)/(CAPACITY), 0) AS "OCCUPANCY RATE"
我得到了很多小数位。
如果我这样做:
ROUND(100*(CURRENRL)/(CAPACITY), 0) AS "OCCUPANCY RATE"
我得到一个很好的整数,但它似乎没有正确舍入。例如,对于第6个数字,我得到59而不是60,而对于第7个数字,我得到66而不是67,等等。
答案 0 :(得分:3)
使用演员和圆形组合怎么样?四舍五入后,将其切换为INT以获得整数。
SELECT **CAST(** _ROUND(100.0*(CURRENRL)/(CAPACITY)), 0)_ **AS INT)** AS "OCCUPANCY RATE"
FROM COURSE, LOCATION
WHERE LOCATION.LOCID=COURSE.LOCID
但也使用天花板测试了E Alexis T的编辑答案,它也给出了您想要的答案。它比我的答案在短代码方面要好得多:)它应该是你的选择。它只有一个低于5的舍入缺陷。例如123.39仍然是124。
答案 1 :(得分:2)
您可以使用SELECT CEILING(66.666666666666)给出67,来自您的陈述:
SELECT CEILING(100*(CURRENRL)/(CAPACITY)) AS "OCCUPANCY RATE"
FROM COURSE, LOCATION
WHERE LOCATION.LOCID=COURSE.LOCID