我有一个查询,显示要完成的作业的百分比。这是我的疑问:
NVL(substr(countprocess_locations.count_attempt_id)/ count(processes.process_id),2,2),0)||'%'as“Percentage Complete”
一切都运行得很好,但是我最近的数学命中率达到了100%,但在查询的输出中它表示为0.我尝试过使用2,2),0并且到目前为止没有差别: /
非常感谢任何帮助。
示例
答案 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)||'%'