SQL中如何让百分比后面保留2位小数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中如何让百分比后面保留2位小数?相关的知识,希望对你有一定的参考价值。

例:select str(convert(float,(@czcj/@ckrs)*100))+'%' as 机试合格率
输出显示:87%,但是想要后面保留两位小数如:87%.12。
谢谢解答!
87.12%
declare @ckrs float
declare @czcj float
declare @bscj float
declare @hgrs float
declare @qkrs float
select @ckrs=count(*) from 计算机考试成绩201112 where 院系名称='旅游系'
select @czcj=count(*) from 计算机考试成绩201112 where 院系名称='旅游系' and 操作成绩>='60'
select @bscj=count(*) from 计算机考试成绩201112 where 院系名称='旅游系' and 理论成绩>='60'
select @hgrs=count(*) from 计算机考试成绩201112 where 院系名称='旅游系' and (理论成绩>='60' and 操作成绩>='60')
select @qkrs=count(*) from 计算机考试成绩201112 where 院系名称='旅游系' and (理论成绩='0' and 操作成绩='0')
select str(convert(float,(@czcj/@ckrs)*100))+'%' as 机试合格率,str(convert(float,(@bscj/@ckrs)*100))+'%' as 笔试通过率,str(convert(float,(@hgrs/@ckrs)*100))+'%' as 通过率,str(convert(float,(@qkrs/@ckrs)*100))+'%' as 缺考率

参考技术A sqlserver:
select str((convert(float,(@czcj/@ckrs)*100)),5,2)+'%'
或者

select convert(varchar,convert(decimal(10,2),(@czcj/@ckrs)*100))+'%'本回答被提问者采纳
参考技术B 我写了一个程序,不知道对你有没有帮助
declare @add decimal (4,4)
set @add=45/47
select @add
结果是 .0000,但是当我换成这样时:set @add=45.00/47时,结果就成了 .9574.然后再乘以百分数应该就可以有两位小数了。追问

请问decimal可以改为float麽,如果可以怎么改?
declare @ckrs float
declare @czcj float
declare @bscj float
declare @hgrs float
declare @qkrs float
select @ckrs=count(*) from 计算机考试成绩201112 where 院系名称='旅游系'
select @czcj=count(*) from 计算机考试成绩201112 where 院系名称='旅游系' and 操作成绩>='60'

参考技术C

为什么小于1直接显示为0 了   结果大于一就正常

参考技术D 貌似你这是mysql数据库啊

SQL中的小数点后的输入位数.

是那一个函数可以控制小数点后面的位数的?

1、用函数 ROUND(数值,s) ,其中 s 表示 小数位数。

例:SELECT ROUND(4.994,2) 返回 4.990。

2、用函数 CAST(数值 as numeric(n,s)),其中n表示有效数字位数,s表示小数位数。

例:SELECT CAST(4.994 as numeric(10,2)) 返回 4.99。

3、用函数 CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数。

例: SELECT CONVERT(numeric(10,2),4.985) 返回 4.99。

其运用的函数是函数 TRUNC。而trunc函数的功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。

扩展资料

TRUNC(for number)语法格式:TRUNC(number,[decimals])

其中:

number 待做截取处理的数值。

decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。

trunc函数 turnc(x,y)如果y是负数,则对x在小数点左边的第|y|位处进行截断。

例如:TRUNC(5.75, -1)=0;

看成 0005.75.000 从小数点左边第一位往左边截,是0。

下面是该函数的使用情况:

TRUNC(89.985,2)=89.98

TRUNC(89.985)=89

TRUNC(89.985,-1)=80

注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。

参考资料来源:百度百科  trunc

参考技术A

运用的函数是函数 TRUNC。

trunc是一种函数,功能和函数INT类似,是截取日期或数字,返回指定的值。函数trunc直接去除数字的小数部分,而函数INT则是向下舍入到最接近的整数。用法如下:trunc

TRUNC(number,num_digits)

Number 需要截尾取整的数字。

Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。

扩展资料

TRUNC(for dates)

TRUNC函数为指定元素而截去的日期值。

其具体的语法格式如下:

TRUNC(date,[fmt])

其中:date是一个日期值,fmt是日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去。

下面是该函数的使用情况:

TRUNC(TO_DATE('24-Nov-1999 08:00 pm','dd-mon-yyyy hh:mi am'))

='24-Nov-1999 12:00:00 am'

TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am'

trunc(sysdate,'yyyy') --返回当年第一天.

trunc(sysdate,'mm') --返回当月第一天.

trunc(sysdate,'d') --返回当前星期的第一天.

trunc(sysdate,'dd')--返回当前年月日

trunc(sysdate, 'hh')--返回当前小时

trunc(sysdate, 'mi')--返回当前分钟

参考资料:百度百科——trunc

参考技术B 一、用函数 ROUND(数值,s) , 其中 s 表示 小数位数

例:SELECT ROUND(4.994,2) 返回 4.990

二、用函数 CAST(数值 as numeric(n,s)),其中n表示有效数字位数,s表示小数位数

例:SELECT CAST(4.994 as numeric(10,2)) 返回 4.99

三、用函数 CONVERT(numeric(n,s),数值),其中n表示有效数字位数,s表示小数位数

例: SELECT CONVERT(numeric(10,2),4.985) 返回 4.99本回答被提问者采纳
参考技术C 6位

以上是关于SQL中如何让百分比后面保留2位小数?的主要内容,如果未能解决你的问题,请参考以下文章

如何让excel中的数字都显示为百分比

oracle:求百分比,保留小数点后两位,不会出现.01的情况,也不会出现#######的情况,写一条sql语句

vue 保留小数点后两位以及转化为百分比

如何让excel饼图的百分比带两位小数

保留一位小数有几种方式?

SQL怎么把小数转换为百分比?