pg数据库百分比处理二
感谢原文链接:https://blog.csdn.net/magi1201/article/details/115719675
PostgreSQL数据库中,两个integer类型数据,如何处理为百分比形式
有表 student ,其中id字段为character类型,total和complete字段为integer型
total为总任务量,complete为完成任务量,当前诉求,求出完成率,保留一位小数
操作尝试
一,直接相除 complete/total,可以看到结果为0
这里为0,因为两个字段均为integer型,会按整数相除处理。
二,使用round函数 round(complete/total, 1)
这里结果与操作一类似,只是加了小数点。因为round只是对round(complete/total, 1)中输入的原值做格式化处理,而原值complete/total依然遵循两个integer数据相除的原则。
查看round后的结果列,结果值类型为 numeric,尝试将除数或被除数设置为numeric类型
三、除数小数化 complete::numeric,round(complete::numeric/total, 3)
这里的操作,将complete做了小数化,这里,可以同时将total做小数化,效果相同
四,百分比形式
如果要将结果展示为百分比形式,比如0.125要展示为12.5%
这里做了一个操作 *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;
如此,除数为0的问题也成功解决。
MySQL数据库字段值百分比展示
利用 round
函数和concat
函数进行配合使用。
select concat(round(0.1596/100 * 100,2),'%')
公式
select concat(round(数字/100 * 100,保留几位小数),'%')
使用 || 不知道好使不好使,oracle 是可以的用|| 来拼接的.
有时候需要以下三个函数一起使用
concat(round(case when sum(字段)=0 then 0 else sum(字段)/sum(字段) end *100, 2) ,'%')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-11-06 集合怎么转换成数组?(数组怎么转换成集合)