【发布时间】:2017-01-13 13:21:40
【问题描述】:
我在 hive 表中有一个列,我想同时使用 impala 和 hive 来查询该列,它应该四舍五入到 10 个十进制值。
即 test_column=32.542999471999998
选择 test_column 应该返回 32.5429994720。我可以在选择查询中使用什么函数来返回这样的值?
【问题讨论】:
标签: sql hive decimal rounding impala
我在 hive 表中有一个列,我想同时使用 impala 和 hive 来查询该列,它应该四舍五入到 10 个十进制值。
即 test_column=32.542999471999998
选择 test_column 应该返回 32.5429994720。我可以在选择查询中使用什么函数来返回这样的值?
【问题讨论】:
标签: sql hive decimal rounding impala
找到解决方案。
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 否则它不会对你的数据进行四舍五入,而只是取十进制值。
在 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
【讨论】: