sql - Hive 仅选择前两位小数
问题描述
Hive 仅选择前两位小数。
Input: columnA decimal datatype value is 57.698700000
Expected output should be 57.69
注意:输出不应四舍五入到下一个最高或最低值
目前我正在使用 trunc(colA,2) 它给我的输出为 57.690000000000 但我的预期输出应该是 57.69 请帮助我提前谢谢
解决方案
您可以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 |
+-----------------+--+
推荐阅读
- firebase - Firebase 托管仅部署到子目录
- r - 根据连续行号将数据框拆分为列表
- php - 继承:找不到父级
- javascript - 为什么从选择列表中选择一个选项时 DOM 没有被修改?
- batch-file - 我在 printui.exe 中通过命令行对打印机设置的状态更改使用什么语法
- php - 登录系统导致 ERR_TOO_MANY_REDIRECTS
- javascript - 如何在fabric.js中影响视频
- vue.js - 组件“mounted”在页面加载时触发两次
- entity-framework-6 - EF6如何在调用save savechanges之前将新添加行的主键插入到同一张表的新行的不同列中?
- php - PayPal - 客户端身份验证失败 - 切换到实时模式