select
ltrim(cast(sum(case when RI_vareity='计算机' then 1 else 0 end)*100.0/
count(1) as dec(18,2)))+'%'
from
reader_information看不懂,要是老师问了,那可就惨了,拜托那位高手提示一下,说的越详细越好,谢谢、谢谢。特别是那些语句有什么用。
ltrim(cast(sum(case when RI_vareity='计算机' then 1 else 0 end)*100.0/
count(1) as dec(18,2)))+'%'
from
reader_information看不懂,要是老师问了,那可就惨了,拜托那位高手提示一下,说的越详细越好,谢谢、谢谢。特别是那些语句有什么用。
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隐式转换成 字符类
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(结果) 去掉左边的空格 也就是全面的空格
+'%' 输出结果为 带% 号的
则上面的结果是4*100/10=40,这个结果表示的是百分比。
主要也就是SQL里的几个函数:
case when ... then ..else ... end:是个条件语句,当RI_vareity='计算机' 时,值为1,否则为0;
sum():是求和函数;
dec(n,m):DECMICAL类型,n位,m位小数
cast...as dec();转换类型
ltrim();截取左边空格后的值。
+"%":字符串连接,你懂的!