select 
  ltrim(cast(sum(case when RI_vareity='计算机' then 1 else 0 end)*100.0/
  count(1) as dec(18,2)))+'%'
from 
  reader_information看不懂,要是老师问了,那可就惨了,拜托那位高手提示一下,说的越详细越好,谢谢、谢谢。特别是那些语句有什么用。

解决方案 »

  1.   

    select  
      ltrim(cast(sum(case when RI_vareity='计算机' then 1 else 0 end)*100.0/
      count(1) as dec(18,2)))+'%'
    from  
      reader_information---CASE WHEN是判断语句 当RI_vareity='计算机' 的时候取1 否则取0
    SUM嵌套在外面是用来求和*100.0 以后再CAST是转换成 DECMICAL型的数LTRIM隐式转换成 字符类
      

  2.   


    ltrim(cast(sum(case when RI_vareity='计算机' then 1 else 0 end)*100.0/ count(1) as dec(18,2)))+'%'
    帮你分解一下吧 
    从里面开始
    sum(case when RI_vareity='计算机' then 1 else 0 end)
    --当 RI_vareity 为计算机时 结果为1  否则为 0  的和
    这个结果 *100.0  这个是为了有小数
    再/count(1) 除以 结果为1的 行数
    cast (结果) as dec(18,2) 把类型转换成 2位小数
    ltrim(结果) 去掉左边的空格  也就是全面的空格
    +'%'  输出结果为 带% 号的
      

  3.   

    RI_vareity为计算机的,占总数的百分比。例如reader_information表中有10条数据,RI_vareity为计算机的有4条。
    则上面的结果是4*100/10=40,这个结果表示的是百分比。
      

  4.   


    主要也就是SQL里的几个函数:
    case when ... then ..else ... end:是个条件语句,当RI_vareity='计算机' 时,值为1,否则为0;
    sum():是求和函数;
    dec(n,m):DECMICAL类型,n位,m位小数
    cast...as dec();转换类型
    ltrim();截取左边空格后的值。
    +"%":字符串连接,你懂的!