参考声明:https://blog.csdn.net/magi1201/article/details/115719675

PostgreSQL数据库中,两个integer类型数据,如何处理为百分比形式

有表 student ,其中id字段为character类型,total和complete字段为integer型

img

total为总任务量,complete为完成任务量,当前诉求,求出完成率,保留一位小数

操作尝试

一,直接相除 complete/total,可以看到结果为0

img

这里为0,因为两个字段均为integer型,会按整数相除处理。

二,使用round函数 round(complete/total, 1)

img

这里结果与操作一类似,只是加了小数点。因为round只是对round(complete/total, 1)中输入的原值做格式化处理,而原值complete/total依然遵循两个integer数据相除的原则。

查看round后的结果列,结果值类型为 numeric,尝试将除数或被除数设置为numeric类型

三、除数小数化 complete::numeric,round(complete::numeric/total, 3)

img

这里的操作,将complete做了小数化,这里,可以同时将total做小数化,效果相同

四,百分比形式

如果要将结果展示为百分比形式,比如0.125要展示为12.5%

img

这里做了一个操作 round(complete*100::numeric/total, 1)||’%’

  • 除数complete 乘以 100
  • round小数保留3位修改为了*1*
  • round函数外拼接 *|| ‘%’*

五、除数为0处理

如果除数total有为0的情况,complete/total 会报错,使用case when 关键字

select complete, total,
(case when total=0 then ‘/’ else round(complete*100::numeric/total, 1)||’%’ end) as complete_rate
from student;

img

如此,除数为0的问题也成功解决。

原文地址:http://www.cnblogs.com/javaxubo/p/16862703.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性