SQL语句如下:select count(*)as 总数,
sum(case when sex=0 then 1 else 0 end) 男人数,
cast(100*(cast(1.0*sum(case when sex=0 then 1 else 0 end)/count(*) as decimal(18,4)))as varchar(20))+'%' 男占比例
from cj_yonghu
计算结果如下:总数    男人数   男占比例
157888  92984    58.8900%
问题如下:我想得到的结果是:总数    男人数   男占比例
157888  92984    58.89%
该如何做呢?

解决方案 »

  1.   

    select count(*)as 总数,
    sum(case when sex=0 then 1 else 0 end) 男人数,
    cast(100*(cast(1.0*sum(case when sex=0 then 1 else 0 end)/count(*) as decimal(18,2)))as varchar(20))+'%' 男占比例
    from cj_yonghu
      

  2.   

    就是小数点的问题吗?decimal(18,4) 改为 decimal(18,2) 
      

  3.   

    substing(cast(round(1.0*sum(case when sex=0 then 1 else 0 end)/count(*),4) as varchar(10),1,5)+'%'
    --例子
    select substring(cast(round(1.0*2.221/5,4)*100 as varchar(10)),1,5)+'%'
      

  4.   

    这个很简单啊,楼主的decimal的小数位设多了啊,改成decimal(18,2)
      

  5.   

    select count(*)as 总数,
    sum(case when sex=0 then 1 else 0 end) 男人数,
    cast(100*(cast(1.0*sum(case when sex=0 then 1 else 0 end)/count(*) as decimal(18,2)))as varchar(20))+'%' 男占比例
    from cj_yonghu把decimal(18,2)设成 得到的结果是  59.00%而我要的结果是  58.89%
      

  6.   

    SELECT 
    CONVERT(float,
    CONVERT(decimal(18,4),CONVERT(decimal(18,4),92984)/CONVERT(decimal(18,4),157888))
    )*100
      

  7.   

    SELECT CONVERT(decimal(18,2),((CONVERT(decimal(18,4),92984)/CONVERT(decimal(18,4),157888))*100))