当前位置 博文首页 > RemainderTime:mysql除法运算保留小数的函数DECIMAL(P,D)

    RemainderTime:mysql除法运算保留小数的函数DECIMAL(P,D)

    作者:[db:作者] 时间:2021-07-12 21:47

    业务场景

    通过计算买家对店铺商品评价的评分来计算店铺的综合好评率。
    商品评价分数1-5分

    实现

    完整实现sql

    SELECT
    	store_id AS storeId,
    	CONCAT( CONVERT ( ( SUM( score )/ COUNT( score ))* 20, DECIMAL ( 15, 2 )), "%" ) AS centage 
    FROM
    	e_goods_comment 
    WHERE
    	append_id IS NULL 
    	AND evaluation_user_id = 1 
    GROUP BY
    	store_id
    
    • 使用函数 SUM() 函数计算店铺相关所以商品的评分和
    SUM( score )
    
    • 使用 COUNT() 函数计算店铺商品评价数
    COUNT( score )
    
    • 使用DECIMAL (P,D)函数,转换两个数相除后的精度和保留的小数点后位数

    P是表示有效数字数的精度。 P范围为1?65。
    D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。

    -使用函数 CONVERT () 来进行数据类型得到转换
    前:

    SUM( score )/ COUNT( score ))* 20
    


    后:

    CONVERT ( ( SUM( score )/ COUNT( score ))* 20, DECIMAL ( 15, 2 ))
    

    • 使用函数 CONCAT() 来进行百分号的拼接
    CONCAT( CONVERT ( ( SUM( score )/ COUNT( score ))* 20, DECIMAL ( 15, 2 )), "%" )
    

    最后结果:

    cs