配置单元仅选择前两位小数。
Input: columnA decimal datatype value is 57.698700000 Expected output should be 57.69
note:output should 不能四舍五入到下一个最高或最低值目前我正在使用trunc(可乐,2),这是给我的输出为57.69000000000,但我的预期输出应该是57.69请帮助我在这之前谢谢
bq9c1y661#
这是自0.14版本以来配置单元的默认功能。根据刻度,它将考虑周期后的数字。如果你可以有规模为2,那么你的问题将得到解决。有关更多详细信息,请查看此配置单元增强功能。https://issues.apache.org/jira/browse/hive-7373十进制(5,4)中的0将是0十进制(5,4)中的0.0将是0.0小数点(5,4)中的0.00将是0.00十进制(5,4)中的0.00000000将是0.0000
jc3wubiy2#
这里有两种方法:
round(col - 0.005, 2) floor(col * 100) / 100.0
chy5wohz3#
你可以用 ROUND 在Hive中起作用。正如hive文档所说:
ROUND
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 | +-----------------+--+
3条答案
按热度按时间bq9c1y661#
这是自0.14版本以来配置单元的默认功能。根据刻度,它将考虑周期后的数字。如果你可以有规模为2,那么你的问题将得到解决。
有关更多详细信息,请查看此配置单元增强功能。
https://issues.apache.org/jira/browse/hive-7373
十进制(5,4)中的0将是0
十进制(5,4)中的0.0将是0.0
小数点(5,4)中的0.00将是0.00
十进制(5,4)中的0.00000000将是0.0000
jc3wubiy2#
这里有两种方法:
chy5wohz3#
你可以用
ROUND
在Hive中起作用。正如hive文档所说:
例如:
或者,如果要精确到小数点,可以尝试以下操作: