select col1,to_char(round(100*col2/x.a))||'%' from 表A,(select sum(col2) a from 表A) x;

解决方案 »

  1.   

    select col1,col2,to_char(round(100*col2/x.a))||'%' from 表A,(select sum(col2) a from 表A) x;
      

  2.   

    SQL> select * from aa;     CLASS NAME          SCORE
    ---------- -------- ----------
             1 aa               90
             1 bb               80
             1 猪八戒           60
             1 孙悟空           55
             1 唐僧             15
             1 沙和尚            5
             1 楼主             99
             2 你好             90已选择8行。SQL> select a.name,round(100*(a.score/b.score),2)||'%' from
      2  aa a,
      3  (select sum(score) score from aa) b
      4  /NAME     ROUND(100*(A.SCORE/B.SCORE),2)||'%'
    -------- -----------------------------------------
    aa       18.22%
    bb       16.19%
    猪八戒   12.15%
    孙悟空   11.13%
    唐僧     3.04%
    沙和尚   1.01%
    楼主     20.04%
    你好     18.22%已选择8行。
      

  3.   

    select col1,col2,to_char(round(100*col2/x.a))||'%' from 表A,(select sum(col2) a from 表A) x;
      

  4.   

    to_char(round(100*col2/x.a))||'%'
    这句话中,||'%'是何意啊?     ||不是代表或吗?看不懂,请大侠指教,谢谢了!!
      

  5.   

    || 表示连接字符串,上面的先将100*col2/x.a四舍五入为整数,然后to_char(),转换为字符串,然后再在后面加一个字符‘%’