druid 中的金额最多保留 2 位小数

问题描述 投票:0回答:1

我有一个数据类型为字符串的金额列。 我想在 Apache Druid 中将这些四舍五入到小数点后两位。

例如:

  • 0.0
    应该是
    0.00
  • 3.0
    应该是
    3.00
  • 5.6666
    应该是
    5.67
sql decimal apache-superset druid
1个回答
1
投票

到目前为止,你还不能在 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
© www.soinside.com 2019 - 2024. All rights reserved.