MySQL没有给我正确的小数位数

MySQL没有给我正确的小数位数,mysql,sql,Mysql,Sql,它回来了 SELECT CAR_ID , AVG(ROUND(TRAVEL_PRICE * TRAVEL_DISCOUNT,2)) AS DISCOUNT_AMOUNT FROM TRAVELS WHERE TRAVEL_DISCOUNT IS NOT NULL GROUP BY CAR_ID 我如何得到小数点后2位 CAR_ID DISCOUNT_AMOUNT 1002 3.513333 1003 6.280000 1004 0.6200

它回来了

SELECT  CAR_ID
     , AVG(ROUND(TRAVEL_PRICE * TRAVEL_DISCOUNT,2)) AS DISCOUNT_AMOUNT
  FROM  TRAVELS
 WHERE TRAVEL_DISCOUNT IS NOT NULL
 GROUP 
    BY  CAR_ID
我如何得到小数点后2位

CAR_ID  DISCOUNT_AMOUNT
1002    3.513333
1003    6.280000
1004    0.620000
  • 您的代码应该是这样的。先做平均值,然后再转一圈
  • 您的代码应该是这样的。先做平均值,然后再转一圈

  • 所以从你的数据来看,Id1002车的平均价格是3.51美分和三分之一美分。如果要将其四舍五入到小数点后2位,只需在平均值周围添加一个四舍五入:

    SELECT  CAR_ID, ROUND(AVG(TRAVEL_PRICE * TRAVEL_DISCOUNT),2) AS DISCOUNT_AMOUNTFROM  TRAVELS WHERE TRAVEL_DISCOUNT IS NOT NULL GROUP  BY  CAR_ID
    

    所以从你的数据来看,Id1002车的平均价格是3.51美分和三分之一美分。如果要将其四舍五入到小数点后2位,只需在平均值周围添加一个四舍五入:

    SELECT  CAR_ID, ROUND(AVG(TRAVEL_PRICE * TRAVEL_DISCOUNT),2) AS DISCOUNT_AMOUNTFROM  TRAVELS WHERE TRAVEL_DISCOUNT IS NOT NULL GROUP  BY  CAR_ID
    

    您没有对
    AVG
    的结果进行四舍五入。您必须先进行AVG,然后进行四舍五入,而不是按照您的方式进行。我会更改什么?先进行AVG,然后进行四舍五入:
    ROUND(AVG(差旅价格*差旅折扣),2)
    @nacho不,它可能在AVG之前和之后都是四舍五入的。内部的四舍五入计算给定行的实际折扣金额,并且应该指定小数点后2位(除非您使用的是除2位小数以外的极少数世界货币之一)。外圆应该指定他们希望平均值显示的精度。你不能对
    AVG
    的结果进行四舍五入。你必须先进行AVG,然后进行四舍五入,而不是按照你的方式进行。我会改变什么?先进行AVG,然后进行四舍五入:
    四舍五入(AVG(差旅价格*差旅折扣),2)
    @nacho不,它可能在平均值之前和之后都是四舍五入的。内部的四舍五入计算给定行的实际折扣金额,并应指定小数点后两位(除非您使用的是除2位小数以外的极少数世界货币之一)。外圆应该指定他们希望平均值显示的精度。当我这样做时,当答案为5.31时,返回第一行为5.32。。。你知道如何解决这个问题吗?你能把你的第一辆车的样本数据添加到问题中吗?理想的情况是创建表格并在小提琴中插入语句,例如ROUND(平均值(ROUND(TRAVEL_PRICE*TRAVEL_DISCOUNT,2)),2)当我这样做时,它可能会工作,当答案为5.31时,它会将第一行返回为5.32。。。你知道如何解决这个问题吗?你能把第一辆车的样本数据添加到问题中吗?理想情况下,可以创建表格并在小提琴中插入语句,例如ROUND(平均值(ROUND(旅行价格*旅行折扣,2)),2)这可能work@RobertMarsella感谢一个人的最好方式是接受他们的答案。@RobertMarsella感谢一个人的最好方式是接受他们的答案。