Mysql 对数据统计百分比的四舍五入

本文介绍了一种使用SQL进行复杂统计的方法,通过具体示例展示了如何利用IFNULL、CONCAT、ROUND及LEFT等函数处理两表数据比率计算的问题,并解释了每个函数的功能与用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                     先贴出一段sql例子    可以看得出来这里统计的是  t 表 和 t1表 一月份到12 月份 的 总数     就是t 表的总数  除以 t1 表的总数   


SELECT  
        IFNULL(CONCAT(ROUND((LEFT(t.tsum/t1.t1sum*100,6)),2),'%'),0) as auditi_than  
        from  
        (SELECT COUNT(0) as tsum from t_sqwg t  where 1=1   
           and t.time BETWEEN '2017-01-01' and '2017-12-29'  
        )t,  
        (select count(0) as t1sum from t_sqwg_log t where 1=1   
           and t.date BETWEEN '2017-01-01' and '2017-12-29'  
    ) t1
              
最后的结果就是这样的 




  以上的sql 也用到了 mysql 的四种函数 也就是 IFNUll ,CONCAT, ROUND,LEFT 


先来看看括号最里面的LEFT


LEFT(t.tsum/t1.t1sum*100,6)如果 t表比上t1保留小数点两位 的结果为 463.5523


那 select left(463.5523,6)  >> 463.55 


   select left(463.5523,5)  >> 463.5  


 
再看LEFT 后面的ROUND 函数 也就是MYSQL 的四舍五入函数 它有两种形式


   ROUND(values,x)  values是要处理的数 x 是指保留几位小数点  但是 x 也可以为负数   当为负数时小数点左边的 x位整数为0 同时小数都为0 


ROUND(values)  其实就是ROUND(values,0) 默认x 为0


列子  
  
SELECT ROUND(4578.45785, 2 ) 
>>> 4578.46  
 
SELECT ROUND(4578.45785, 3)
>>> 4578.458 
 
SELECT ROUND(4578.45785, -1 )
>>> 4570


SELECT ROUND(4578.45785, -2) 
>>> 4500
所以 以上sql 就是
ROUND((LEFT(t.tsum/t1.t1sum*100,6)),2) <的结果为 463.55>  


然后 再用函数CONCAT 把 结果和 百分号 %  CONCAT(ROUND((LEFT(t.tsum/t1.t1sum*100,6)),2),'%')  


>>>463.55%


最后在来个IFNULL  函数  这里放的作用就是 如果值为NULL  就为0    当然也可以为其他数字或者为字符串值  取决它被使用的上下文  
 
这里使用的LEFT 不用也没关系   现在这里用到是因为业务需要这样  IFNULL 加上也不错保险 毕竟值不会为空了   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值