我有一个数据类型为字符串的金额列。 我想在 Apache Druid 中将这些四舍五入到小数点后两位。
例如:
0.0
应该是0.00
3.0
应该是3.00
5.6666
应该是5.67
到目前为止,你还不能在 Druid 中进行这种舍入。我使用这个查询没有成功:
-- 0.0 should be 0.00
-- 3.0 should be 3.00
-- 5.6666 should be 5.67
SELECT ROUND(0.01, 2) as test_value_1, --OUTPUT: 0.01
ROUND(3.1231, 2) as test_value_2, --OUTPUT: 3.12
ROUND(5.6666, 2) as test_value_3, --OUTPUT: 5.67
ROUND(5.00, 2) as test_value_4, --OUTPUT: 5
CAST(0 as DECIMAL) as value_5 --OUTPUT: 0
我已经审阅了这些文件Expression,在其中我们可以读到:
round(x, y) 返回 x 四舍五入到 y 小数点后的值 地方。虽然 x 可以是整数或浮点数,但 y 必须是 一个整数。返回值的类型由 x 的类型指定。 y 如果省略则默认为 0。当 y 为负数时,x 向左舍入 y 小数点一侧。如果 x 为 NaN,则 x 返回 0。如果 x 为 无穷大,x 将转换为最接近的有限双精度。
所以,我认为你可以四舍五入但不能添加零。
如果你想强制小数为偶数,可以使用STRING_FORMAT:
SELECT STRING_FORMAT('%.2f', 0.0) as test_value_1, --OUTPUT: 0.00
STRING_FORMAT('%.2f', 3.0) as test_value_2, --OUTPUT: 3.00
STRING_FORMAT('%.2f', 5.6666) as test_value_3, --OUTPUT: 5.66
STRING_FORMAT('%.2f', 1.0 * 0) as value_4 --OUTPUT: 0.00