首页 > 解决方案 > Hive 仅选择前两位小数

问题描述

Hive 仅选择前两位小数。

Input: columnA decimal datatype value is 57.698700000
Expected output should be 57.69

注意:输出不应四舍五入到下一个最高或最低值

目前我正在使用 trunc(colA,2) 它给我的输出为 57.690000000000 但我的预期输出应该是 57.69 请帮助我提前谢谢

标签: sqlhadoophivehiveql

解决方案


您可以ROUND在 Hive 中使用函数。

正如 Hive 文档所说:

round(DOUBLE a, INT d)

Returns a rounded to d decimal places.

举个例子:

SELECT ROUND(58.3265487, 2) AS num_round;

+------------+--+
| num_round  |
+------------+--+
| 58.33      |
+------------+--+

SELECT ROUND(58.3265487, 3) AS num_round;

+------------+--+
| num_round  |
+------------+--+
| 58.327     |
+------------+--+

或者如果你想四舍五入到精确的小数,你可以尝试如下:

SELECT CAST(CONCAT(SPLIT(71.42857142857143, '\\.')[0],'.', SUBSTRING(SPLIT(71.42857142857143, '\\.')[1], 1, 2)) AS DECIMAL(10,2)) AS number_rounded;

+-----------------+--+
| number_rounded  |
+-----------------+--+
| 71.42           |
+-----------------+--+

推荐阅读