Oracle SQL 100%显示为0%

时间:2013-11-30 00:31:59

标签: sql oracle percentage

我有一个查询,显示要完成的作业的百分比。这是我的疑问:

NVL(substr(countprocess_locations.count_attempt_id)/ count(processes.process_id),2,2),0)||'%'as“Percentage Complete”

一切都运行得很好,但是我最近的数学命中率达到了100%,但在查询的输出中它表示为0.我尝试过使用2,2),0并且到目前为止没有差别: /

非常感谢任何帮助。

示例

enter image description here

1 个答案:

答案 0 :(得分:4)

通过一个工作示例将其分解。

159/180 = 0.883333

SUBSTR首先将其转换为文本,这样做时Oracle会删除前导零

0.883333

SUBSTR然后从第二个

开始接受两个字符

* 88 * 3333

然后你将'%'连接到它

88%

如果你有100%的流动:

2000/2000 = 1

转换为文字

1

从第二个

开始使用两个字符

NULL

然后你的NVL返回0。

而不是SUBSTR你应该* 100然后ROUND或者如果你真的只想丢弃数字而不是舍入使用TRUNC。

NVL(ROUND((countprocess_locations.count_attempt_id)/count(processes.process_id))*100,0),0)||'%'