SQL - 1.将差异舍入为2位小数

时间:2017-10-05 15:14:42

标签: sql oracle decimal rounding

我正在尝试使用SELECT属性列表中的子查询创建一个SQL语句,以显示产品ID,当前价格以及当前价格与总体平均值之间的差异。

我知道使用ROUND函数会将差值四舍五入到零小数,但我想将差值四舍五入到小数点后两位。

End

我尝试过使用CAST,但它仍然给了我相同的输出。

SELECT p_code, p_price, ROUND(p_price - (SELECT AVG(p_price) FROM product)) AS "Difference" 
FROM product;

提前感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:2)

round()采用第二个论点:

SELECT p_code, p_price,
       ROUND(p_price - AVG(p_price) OVER (), 2) AS "Difference"
FROM product;

请注意,我还将子查询更改为窗口函数。

我经常建议转换为numberdecimal / numeric):

SELECT p_code, p_price,
       cast(p_price - AVG(p_price) OVER () as number(10, 2)) AS "Difference"
FROM product;

这样可以确保显示两个小数点。