oracle查询 求百分比

wattor 2009-07-01 02:20:22
Oracle数据库中,一个表有两个字段,所有数量(allnum),成功数量(sucessnum),都是long类型的
select allnum,sucessnum from mytabl;

现在想在查询处增加一列:成功率(用百分比,小数点保留两位数字)

select allnum,sucessnum,sucessnum/allnum from mytabl; 这样不能实现我想要的效果
...全文
2543 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jun1100 2011-07-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 a89723253 的回复:]
我同意四楼的,但在正常情况下allnum不会为0,如果非正常情况呢,所以我做了一下改动
select allnum,SUCESSNUM,decode(allnum 0,0,round((SUCESSNUM/allnum)*100,2)||'%') percent from t3;
[/Quote]

这个貌似有点问题.
Richard345265669 2009-07-02
  • 打赏
  • 举报
回复
RoundZ就可以了
a89723253 2009-07-02
  • 打赏
  • 举报
回复
我同意四楼的,但在正常情况下allnum不会为0,如果非正常情况呢,所以我做了一下改动
select allnum,SUCESSNUM,decode(allnum 0,0,round((SUCESSNUM/allnum)*100,2)||'%') percent from t3;
cab1225 2009-07-01
  • 打赏
  • 举报
回复
SQL> select * from t3;

ALLNUM SUCESSNUM
---------- ----------
88 43
53 20
57 23
76 21

SQL> select allnum,SUCESSNUM,round((SUCESSNUM/allnum)*100,2)||'%' percent from t3;

ALLNUM SUCESSNUM PERCENT
---------- ---------- -----------------------------------------
88 43 48.86%
53 20 37.74%
57 23 40.35%
76 21 27.63%

SQL>

SQL> select * from t3;

ALLNUM SUCESSNUM
---------- ----------
88 43
53 20
57 23
76 21

SQL> select allnum,SUCESSNUM,round((SUCESSNUM/allnum)*100,2)||'%' percent from t3;

ALLNUM SUCESSNUM PERCENT
---------- ---------- -----------------------------------------
88 43 48.86%
53 20 37.74%
57 23 40.35%
76 21 27.63%

SQL>

SQL> select * from t3;

ALLNUM SUCESSNUM
---------- ----------
88 43
53 20
57 23
76 21

SQL> select allnum,SUCESSNUM,round((SUCESSNUM/allnum)*100,2)||'%' percent from t3;

ALLNUM SUCESSNUM PERCENT
---------- ---------- -----------------------------------------
88 43 48.86%
53 20 37.74%
57 23 40.35%
76 21 27.63%

SQL>

csuxp2008 2009-07-01
  • 打赏
  • 举报
回复
方法一:select allnum,sucessnum,to_char((sucessnum/allnum)*100,'99D99')||'%' from mytabl;
方法二:select allnum,SUCESSNUM,round((SUCESSNUM/allnum)*100,2)||'%' 成功率 from mytabl;

两种方法均可,我已测试过
wjwwj33 2009-07-01
  • 打赏
  • 举报
回复
select allnum,sucessnum,to_char(100 * sucessnum/allnum, 'fm99999990.00') || '%' from mytabl
wattor 2009-07-01
  • 打赏
  • 举报
回复
楼上的太细致了,佩服
hyrongg 2009-07-01
  • 打赏
  • 举报
回复

SQL> select * from t3;

ALLNUM SUCESSNUM
---------- ----------
88 43
53 20
57 23
76 21

SQL> select allnum,SUCESSNUM,round((SUCESSNUM/allnum)*100,2)||'%' percent from t3;

ALLNUM SUCESSNUM PERCENT
---------- ---------- -----------------------------------------
88 43 48.86%
53 20 37.74%
57 23 40.35%
76 21 27.63%

SQL>
csuxp2008 2009-07-01
  • 打赏
  • 举报
回复
上面的错了,更正一下:

select allnum,sucessnum,to_char((sucessnum/allnum)*100,'99D99')||'%' from mytabl;


csuxp2008 2009-07-01
  • 打赏
  • 举报
回复

select allnum,sucessnum,to_char(sucessnum/allnum,'99D99')||'%' from mytabl;

试试看
bw555 2009-07-01
  • 打赏
  • 举报
回复
select allnum,sucessnum,
round(sucessnum*100/allnum,2)||'%' as 成功率
from mytabl;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧