【问题标题】:Impala rounding upto 10 decimal placesImpala 四舍五入到小数点后 10 位
【发布时间】:2017-01-13 13:21:40
【问题描述】:

我在 hive 表中有一个列,我想同时使用 impala 和 hive 来查询该列,它应该四舍五入到 10 个十进制值。

即 test_column=32.542999471999998

选择 test_column 应该返回 32.5429994720。我可以在选择查询中使用什么函数来返回这样的值?

【问题讨论】:

    标签: sql hive decimal rounding impala


    【解决方案1】:

    找到解决方案。

    select cast(test_column as decimal(20,10)) from table_name

    这将导致:32.5429994720

    round(test_column,10) 没有返回所需的结果。

    【讨论】:

    • 使用下面的那个。这将是一个完美的答案。 select cast(round(test_column,10) as decimal(20,10)) from table_name 否则它不会对你的数据进行四舍五入,而只是取十进制值。
    • 能否指定您使用的是 Hive 还是 Impala?您的答案似乎与另一个答案相矛盾。
    【解决方案2】:

    在 Cloudera 5 / RHEL 上,结果与您的不同(您使用 Hive 吗?):

    在黑斑羚中:

    Select cast ( 32.542999471999998 as decimal(20,10))
    , ROUND( 32.542999471999998, 10)
    , cast(round( 32.542999471999998,10) as decimal(20,10))
    

    cast(32.542999471999998 为十进制(20,10)) | 圆形(32.542999471999998, 10) |投(轮(32.542999471999998, 10)为 十进制(20,10))

    32.5429994719 | 32.5429994720 | 32.5429994720

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多