重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select '优秀率:'+
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了石拐免费建站欢迎大家使用!
cast(cast((select count(1) from 分数表名 where 分数列=90) as decimal(18,2))/cast((select count(1) from 分数表名) as decimal(18,2))*100 as varchar(20))+'%' as 优秀率
把对应表名 和 分数的列名 改成你的。
测试可用
如图
decimal(5,2)
表示所有数据位数【不含小数点 整数位数+小数位数】不多于5位
其中小数位数不多于2位
select REALHANDLER, count(*) as 总数, sum(case when status='RESOLVED' then 1 else 0 end)as 已解决,
sum(case when status!='RESOLVED' then 1 else 0 end)as 未解决,
sum(case when status='RESOLVED' then 1 else 0 end)+0.0001/count(*) as 完成率
from INCIDENT
group by REALHANDLER
)+0.0001试一下 因为返回的类型和sum(case when status='RESOLVED' then 1 else 0 end),count(*) 一样
我们需要准备的材料分别是:电脑。
1、在我的电脑中,搜索访问sql占用内存,在右侧的管理服务器中选择重新启动,重启一下IIS。
2、查看一下,sql服务仍然占用大量的内存,内存占用基本没有改变。
3、然后重启sql服务。
4、然后再重启一下sql代理。
5、最后再看一下任务管理器,就会发现内存占用量降低了。
select name,str((case (select isnull(sum(cost),0) from table1) when 0 then 0 else cost/(select isnull(sum(cost),0) from table1) end)*100,10,2)+'%' as bfb from table1
以上sql语句较长,解释一下:
使用case...when...end,是为了避免合计cost为0的话,出现无法除0的错误;结果值乘以100是为了配合百分比格式;使用str(...,10,2)函数是把计算出来的数字值转换成两位小数精度的文本串;最后,在结果后加上一个百分号,效果就完整了。
以上语句在sqlserver数据库中测试通过。
标准答案:
declare @ACount int
select @ACount=count(*) from 表 --计算总数,避免放在大数据的select中影响效率
if @ACount0 --判断是否有记录,无记录时@Acount为0,不能做除数
select 表.name,cast(count(*) as numeric(10,3))/cast(@ACount as numeric(10,3)) from 表 group by 表.name --做百分比时要避免直接用/,会整除的,就无法判断%比例了。
else
select '表中无记录,无法统计比例'
--小数点后保留三位,换算成%比,应该如12.5%的精确度,numeric(10,3)前面的10如果长度不够可以根据需要修改