Hive内置函数大全-05-数学计算函数-更新中

108 阅读1分钟

ROUND(DOUBLE a, INT d)

  • 定义:round(DOUBLE a)
  • 说明:四舍五入,d代表保留小数,如果不设置d,则四舍五入到整数。
  • 返回值类型:double
  • 案例
SELECT ROUND(1.1);
+------+
| _c0  |
+------+
| 1    |
+------+

SELECT ROUND(1.5);
+------+
| _c0  |
+------+
| 2    |
+------+

SELECT ROUND(-1.5);
+------+
| _c0  |
+------+
| -2   |
+------+

SELECT ROUND(1.42, 1);
+------+
| _c0  |
+------+
| 1.4  |
+------+

SELECT ROUND(1.45, 1);
+------+
| _c0  |
+------+
| 1.5  |
+------+

CEIL(DOUBLE a)、CEILING(DOUBLE a)

  • 定义:ceil(DOUBLE a), ceiling(DOUBLE a)
  • 说明:向上取整
  • 返回值类型:bigint
  • 案例
SELECT CEIL(1.1);
------+
| _c0  |
+------+
| 2    |
+------+

SELECT CEILING(1.5);
+------+
| _c0  |
+------+
| 2    |
+------+

SELECT CEIL(-1.5);
+------+
| _c0  |
+------+
| -1   |
+------+

FLOOR(DOUBLE a)

  • 定义:floor(DOUBLE a)
  • 说明:向下取整
  • 返回值类型:bigint
  • 案例
SELECT FLOOR(1.1);
+------+
| _c0  |
+------+
| 1    |
+------+

SELECT FLOOR(1.5);
+------+
| _c0  |
+------+
| 1    |
+------+

SELECT FLOOR(-1.1);
+------+
| _c0  |
+------+
| -2   |
+------+

RAND()、RAND(INT seed)

  • 定义:rand(), rand(int seed)
  • 说明:返回一个在(0,1)之间随机小数,设置seed可以确保生成的随机数序列是固定
  • 返回值类型:double
  • 案例
SELECT RAND(), RAND(), RAND(1), RAND(1), RAND(2), RAND(2);
+----------------------+----------------------+---------------------+---------------------+---------------------+---------------------+
|         _c0          |         _c1          |         _c2         |         _c3         |         _c4         |         _c5         |
+----------------------+----------------------+---------------------+---------------------+---------------------+---------------------+
| 0.23766236727559042  | 0.28040649735589407  | 0.7308781907032909  | 0.7308781907032909  | 0.7311469360199058  | 0.7311469360199058  |
+----------------------+----------------------+---------------------+---------------------+---------------------+---------------------+

PMOD(INT a, INT b)、PMOD(DOUBLE a, DOUBLE b)

  • 定义:pmod(int a, int b), pmod(double a, double b)
  • 说明:返回 a % b 的正数值
  • 返回值类型:int或double
  • 案例
SELECT PMOD(5, 3);
+------+
| _c0  |
+------+
| 2    |
+------+

SELECT PMOD(-5, 3);
+------+
| _c0  |
+------+
| 1    |
+------+

SELECT PMOD(-5.0, 3.0);
+------+
| _c0  |
+------+
| 1.0  |
+------+


SELECT -5 % 3;
+------+
| _c0  |
+------+
| -2   |
+------+