MaxCompute SQL提供了常见的数学函数供您在开发过程中使用,您可以根据实际需要选择合适的数学函数,进行数据计算、数据转换相关操作。本文为您提供MaxCompute SQL支持的数学函数的命令格式、参数说明及示例,指导您使用数学函数完成开发。
函数 | 功能 |
---|---|
ABS | 计算绝对值。 |
ACOS | 计算反余弦值。 |
ASIN | 计算反正弦值。 |
ATAN | 计算反正切值。 |
CEIL | 计算向上取整值。 |
CONV | 计算进制转换值。 |
COS | 计算余弦值。 |
COSH | 计算双曲余弦值。 |
COT | 计算余切值。 |
EXP | 计算指数值。 |
FLOOR | 计算向下取整值。 |
LN | 计算自然对数。 |
LOG | 计算log对数值。 |
POW | 计算幂值。 |
RAND | 返回随机数。 |
ROUND | 返回四舍五入到指定小数点位置的值。 |
SIN | 计算正弦值。 |
SINH | 计算双曲正弦值。 |
SQRT | 计算平方根。 |
TAN | 计算正切值。 |
TANH | 计算双曲正切值。 |
TRUNC | 返回截取到指定小数点位置的值。 |
LOG2 | 计算以2为底的对数。 |
LOG10 | 计算以10为底的对数。 |
BIN | 计算二进制代码值。 |
HEX | 返回整数或字符串的十六进制格式。 |
UNHEX | 返回十六进制字符串所代表的字符串。 |
RADIANS | 将角度转换为弧度。 |
DEGREES | 将弧度转换为角度。 |
SIGN | 返回输入参数的符号。 |
E | 返回e的值。 |
PI | 返回π的值。 |
FACTORIAL | 计算阶乘值。 |
CBRT | 计算立方根值。 |
SHIFTLEFT | 计算按位左移值。 |
SHIFTRIGHT | 计算按位右移值。 |
SHIFTRIGHTUNSIGNED | 计算无符号按位右移值。 |
FORMAT_NUMBER | 将数字转化为指定格式的字符串。 |
WIDTH_BUCKET | 返回指定字段值落入的分组编号。 |
ABS
- 命令格式
DOUBLE ABS(DOUBLE number) BIGINT ABS(BIGINT number) DECIMAL ABS(DECIMAL number)
- 命令说明
该函数用于返回number的绝对值。
- 参数说明
number:当number为DOUBLE、BIGINT或DECIMAL类型时会返回相应的类型。
- 输入为BIGINT,则返回BIGINT类型。
- 输入为DOUBLE,则返回DOUBLE类型。
- 输入为DECIMAL,则返回DECIMAL类型。
- 输入为STRING,则隐式转换为DOUBLE类型后参与运算。
- 输入非以上4种类型,则返回异常。
说明 当输入BIGINT类型的值超过BIGINT的最大表示范围时,会返回DOUBLE类型,但可能会损失精度。 - 返回值
返回值类型取决于输入参数的类型,包含DOUBLE、BIGINT或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
ABS(null)=null ABS(-1)=1 ABS(-1.2)=1.2 ABS("-2")=2.0 ABS(122320837456298376592387456923748)=1.2232083745629837e32
下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数和聚合函数外)的使用方式与其类似。//取tbl1表内id字段的绝对值。 SELECT ABS(id) FROM tbl1;
ACOS
- 命令格式
DOUBLE ACOS(DOUBLE number) DECIMAL ACOS(DECIMAL number)
- 命令说明
该函数用于计算number的反余弦函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型,取值范围为[-1,1]。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。输入为其他数据类型时则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型,值域在0~π之间。如果输入参数为NULL,则返回NULL。
- 示例
ACOS("0.87")=0.5155940062460905 ACOS(0)=1.5707963267948966
ASIN
- 命令格式
DOUBLE ASIN(DOUBLE number) DECIMAL ASIN(DECIMAL number)
- 命令说明
该函数用于计算number的反正弦函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型,取值范围为[-1,1]。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他数据类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型,值域在-π/2~π/2之间。如果输入参数为NULL,则返回NULL。
- 示例
ASIN(1)=1.5707963267948966 ASIN(-1)=-1.5707963267948966
ATAN
- 命令格式
DOUBLE ATAN(DOUBLE number)
- 命令说明
该函数用于计算number的反正切函数。
- 参数说明
number:DOUBLE类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他数据类型则返回异常。
- 返回值说明
返回DOUBLE类型,值域在-π/2~π/2之间。如果输入参数为NULL,则返回NULL。
- 示例
ATAN(1)=0.7853981633974483 ATAN(-1)=-0.7853981633974483
CEIL
- 命令格式
BIGINT CEIL(DOUBLE value) BIGINT CEIL(DECIMAL value)
- 命令说明
向上取整,函数返回不小于输入值value的最小整数。
- 参数说明
value:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回BIGINT类型。如果输入参数为NULL,则返回NULL。
- 示例
CEIL(1.1)=2 CEIL(-1.1)=-1
CONV
- 命令格式
STRING CONV(STRING input, BIGINT from_base, BIGINT to_base)
- 命令说明
该函数为进制转换函数。
- 参数说明
- input:以STRING表示的要转换的整数值,支持BIGINT和DOUBLE的隐式转换。
- from_base、to_base:以十进制表示的进制值,支持的值为2、8、10和16。支持STRING及DOUBLE类型的隐式转换。
- 返回值说明
返回STRING类型。如果任一输入参数为NULL,则返回NULL。转换过程以64位精度工作,溢出时返回异常。输入如果是负值,即以短划线(-)开头,返回异常。如果输入的是小数,会转为整数值后进行进制转换,小数部分会被舍弃。
- 示例
CONV('1100', 2, 10)='12' CONV('1100', 2, 16)='c' CONV('ab', 16, 10)='171' CONV('ab', 16, 16)='ab'
COS
- 命令格式
DOUBLE COS(DOUBLE number) DECIMAL COS(DECIMAL number)
- 命令说明
该函数用于计算number的余弦函数,输入为弧度值。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
- 示例
COS(3.1415926/2)=2.6794896585028633e-8 COS(3.1415926)=-0.9999999999999986
COSH
- 命令格式
DOUBLE COSH(DOUBLE number) DECIMAL COSH(DECIMAL number)
- 命令说明
该函数用于计算number的双曲余弦函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
COT
- 命令格式
DOUBLE COT(DOUBLE number) DECIMAL COT(DECIMAL number)
- 命令说明
该函数用于计算number的余切函数,输入为弧度值。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
EXP
- 命令格式
DOUBLE EXP(DOUBLE number) DECIMAL EXP(DECIMAL number)
- 命令说明
该函数用于计算number的指数函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回number的指数值。返回值为DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
FLOOR
- 命令格式
BIGINT FLOOR(DOUBLE number) BIGINT FLOOR(DECIMAL number)
- 命令说明
向下取整,函数返回不大于number的最大整数值。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回BIGINT类型。如果输入参数为NULL,则返回NULL。
- 示例
FLOOR(1.2)=1 FLOOR(1.9)=1 FLOOR(0.1)=0 FLOOR(-1.2)=-2 FLOOR(-0.1)=-1 FLOOR(0.0)=0 FLOOR(-0.0)=0
LN
- 命令格式
DOUBLE LN(DOUBLE number) DECIMAL LN(DECIMAL number)
- 命令说明
该函数用于返回number的自然对数。
- 参数说明
number:DOUBLE类型或DECIMAL类型。
- 如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 如果输入参数为NULL,则返回NULL;如果输入参数为负数或0,则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。
LOG
- 命令格式
DOUBLE LOG(DOUBLE base, DOUBLE x) DECIMAL LOG(DECIMAL base, DECIMAL x)
- 命令说明
该函数用于返回以base为底的x的对数。
- 参数说明
- base:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- x:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型的对数值。
- 如果任一输入参数为NULL,则返回NULL。
- 如果任一输入参数为负数或0,则返回异常。
- 如果base为1(会引发一个除零行为),也会返回异常。
POW
- 命令格式
DOUBLE POW(DOUBLE x, DOUBLE y) DECIMAL POW(DECIMAL x, DECIMAL y)
- 命令说明
该函数用于返回x的y次方,即
x^y
。 - 参数说明
- x:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- y:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。
RAND
- 命令格式
DOUBLE RAND(BIGINT seed)
- 命令说明
该函数返回DOUBLE类型的随机数,返回值区间是0~1。
- 参数说明
seed:可选参数,BIGINT类型,随机数种子,决定随机数序列的起始值。
- 返回值说明
返回DOUBLE类型。
- 示例
SELECT RAND(); SELECT RAND(1);
ROUND
- 命令格式
DOUBLE ROUND(DOUBLE number, [BIGINT DECIMAL_places]) DECIMAL ROUND(DECIMAL number, [BIGINT DECIMAL_places])
- 命令说明
该函数四舍五入到指定小数点位置。
- 参数说明
- number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入是其他类型则返回异常。
- DECIMAL_places:BIGINT类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。
说明 DECIMAL_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果DECIMAL_places超过了整数部分长度,返回0。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。
- 示例
ROUND(125.315)=125.0 ROUND(125.315, 0)=125.0 ROUND(125.315, 1)=125.3 ROUND(125.315, 2)=125.32 ROUND(125.315, 3)=125.315 ROUND(-125.315, 2)=-125.32 ROUND(123.345, -2)=100.0 ROUND(null)=null ROUND(123.345, 4)=123.345 ROUND(123.345, -4)=0.0
SIN
- 命令格式
DOUBLE SIN(DOUBLE number) DECIMAL SIN(DECIMAL number)
- 命令说明
该函数用于计算number的正弦函数,输入为弧度值。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
SINH
- 命令格式
DOUBLE SINH(DOUBLE number) DECIMAL SINH(DECIMAL number)
- 命令说明
该函数用于计算number的双曲正弦函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
SQRT
- 命令格式
DOUBLE SQRT(DOUBLE number) DECIMAL SQRT(DECIMAL number)
- 命令说明
该函数用于计算number的平方根。
- 参数说明
number:DOUBLE类型或DECIMAL类型,必须大于0,小于0时返回异常。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
TAN
- 命令说明
DOUBLE TAN(DOUBLE number) DECIMAL TAN(DECIMAL number)
- 命令说明
该函数用于计算number的正切函数,输入为弧度值。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
TANH
- 命令格式
DOUBLE TANH(DOUBLE number) DECIMAL TANH(DECIMAL number)
- 命令说明
该函数用于计算number的双曲正切函数。
- 参数说明
number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- 返回值说明
返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。
TRUNC
- 命令格式
DOUBLE TRUNC(DOUBLE number[, BIGINT DECIMAL_places]) DECIMAL TRUNC(DECIMAL number[, BIGINT DECIMAL_places])
- 命令说明
该函数用于将输入值number截取到指定小数点位置。
- 参数说明
- number:DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回异常。
- DECIMAL_places:BIGINT类型常量,要截取到的小数点位置。其他类型参数会隐式转为BIGINT,省略此参数时默认截取到个位数。
说明 DECIMAL_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果DECIMAL_places超过了整数部分长度,则返回0。
- 返回值说明
返回值类型为DOUBLE或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。
说明- 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
TRUNC(125.815,1)
(这个DOUBLE类型显示问题任何系统都存在)。 - 截取掉的部分补0。
- 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
- 示例
TRUNC(125.815)=125.0 TRUNC(125.815,0)=125.0 TRUNC(125.815,1)=125.80000000000001 TRUNC(125.815,2)=125.81 TRUNC(125.815,3)=125.815 TRUNC(-125.815,2)=-125.81 TRUNC(125.815,-1)=120.0 TRUNC(125.815,-2)=100.0 TRUNC(125.815,-3)=0.0 TRUNC(123.345,4)=123.345 TRUNC(123.345,-4)=0.0
MaxCompute2.0扩展函数
LOG2
- 命令格式
DOUBLE LOG2(DOUBLE number) DOUBLE LOG2(DECIMAL number)
- 命令说明
该函数用于返回以2为底,number的对数。
- 参数说明
number:DOUBLE或DECIMAL类型。
- 返回值说明
返回DOUBLE类型。如果输入参数为0或NULL,则返回NULL。
- 示例
LOG2(null)=null LOG2(0)=null LOG2(8)=3.0
LOG10
- 命令格式
DOUBLE LOG10(DOUBLE number) DOUBLE LOG10(DECIMAL number)
- 命令说明
该函数用于返回以10为底,number的对数。
- 参数说明
number:DOUBLE或DECIMAL类型。
- 返回值说明
返回DOUBLE类型。如果输入参数为0或NULL,则返回NULL。
- 示例
LOG10(null)=null LOG10(0)=null LOG10(8)=0.9030899869919435
BIN
- 命令格式
STRING BIN(BIGINT number)
- 命令说明
该函数用于返回number的二进制代码表示。
- 参数说明
number:BIGINT类型。
- 返回值说明
返回STRING类型。如果输入参数为0,则返回0;如果输入参数为NULL,则返回NULL。
- 示例
BIN(0)='0' BIN(null)='null' BIN(12)='1100'
HEX
- 命令格式
STRING HEX(BIGINT number) STRING HEX(STRING number) STRING HEX(BINARY number)
- 命令说明
该函数用于将整数或字符串转换为十六进制格式。
- 参数说明
number:如果number是BIGINT类型,那么返回number的十六进制表示。如果number是STRING类型,则返回该字符串的十六进制表示。
- 返回值说明
- 如果输入非0或非NULL参数,则返回STRING类型。
- 如果输入参数为0,则返回0。
- 如果输入参数为NULL,则返回异常。
- 示例
HEX(0)=0 HEX('abc')='616263' HEX(17)='11' HEX('17')='3137' HEX(null)返回异常信息执行失败。
UNHEX
- 命令格式
BINARY UNHEX(STRING number)
- 命令说明
该函数用于返回十六进制字符串所代表的字符串。
- 参数说明
number:为十六进制字符串。
- 返回值说明
返回BINARY类型。如果输入参数为0,则返回异常;如果输入参数为NULL,则返回NULL。
- 示例
UNHEX('616263')='abc' UNHEX(616263)='abc'
RADIANS
- 命令格式
DOUBLE RADIANS(DOUBLE number)
- 命令说明
该函数用于将角度转换为弧度。
- 参数说明
number:DOUBLE类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
RADIANS(90)=1.5707963267948966 RADIANS(0)=0.0 RADIANS(null)=null
DEGREES
- 命令格式
DOUBLE DEGREES(DOUBLE number) DOUBLE DEGREES(DECIMAL number)
- 命令说明
该函数用于将弧度转换为角度。
- 参数说明
number:DOUBLE或DECIMAL类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
DEGREES(1.5707963267948966)=90.0 DEGREES(0)=0.0 DEGREES(null)=null
SIGN
- 命令格式
DOUBLE SIGN(DOUBLE number) DOUBLE SIGN(DECIMAL number)
- 命令说明
该函数用于获取输入参数的符号。
- 参数说明
number:DOUBLE或DECIMAL类型数据。
- 返回值说明
返回DOUBLE类型。
- 如果输入参数为正数,则返回1.0。
- 如果输入参数为负数,则返回-1.0。
- 如果输入参数为0,则返回0.0。
- 如果输入参数为NULL,则返回NULL。
- 示例
SIGN(-2.5)=-1.0 SIGN(2.5)=1.0 SIGN(0)=0.0 SIGN(null)=null
E
- 命令格式
DOUBLE E()
- 命令说明
该函数用于返回
e
的值。 - 返回值说明
返回DOUBLE类型。
- 示例
E()=2.718281828459045
PI
- 命令格式
DOUBLE PI()
- 命令说明
该函数用于返回π的值。
- 返回值说明
返回DOUBLE类型。
- 示例
PI()=3.141592653589793
FACTORIAL
- 命令格式
BIGINT FACTORIAL(Int number)
- 命令说明
该函数用于返回number的阶乘。
- 参数说明
number:INT类型数据,且在[0,20]之间。
- 返回值说明
返回BIGINT类型。如果输入参数为0,则返回1;如果输入参数为NULL或[0,20]之外的值,则返回NULL。
- 示例
FACTORIAL(5)=120 --5!=5*4*3*2*1=120
CBRT
- 命令格式
DOUBLE CBRT(DOUBLE number)
- 命令说明
该函数用于计算number的立方根。
- 参数说明
number:DOUBLE类型数据。
- 返回值说明
返回DOUBLE类型。如果输入参数为NULL,则返回NULL。
- 示例
CBRT(8)=2 CBRT(null)=null
SHIFTLEFT
- 命令格式
INT SHIFTLEFT(TINYINT|SMALLINT|INT number1, INT number2) BIGINT SHIFTLEFT(BIGINT number1, INT number2)
- 命令说明
该函数用于按位左移(<<)。
- 参数说明
- number1:TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
SHIFTLEFT(1,2)=4 //1的二进制左移2位(1<<2,0001左移两位是0100)。 SHIFTLEFT(4,3)=32 //4的二进制左移3位(4<<3,0100左移3位是100000)。
SHIFTRIGHT
- 命令格式
INT SHIFTRIGHT(TINYINT|SMALLINT|INT number1, INT number2) BIGINT SHIFTRIGHT(BIGINT number1, INT number2)
- 命令说明
该函数用于按位右移(>>)。
- 参数说明
- number1:TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
SHIFTRIGHT(4,2)=1 //4的二进制右移2位(4>>2,0100右移两位是0001)。 SHIFTRIGHT(32,3)=4 //32的二进制右移3位(32>>3,100000右移3位是0100)。
SHIFTRIGHTUNSIGNED
- 命令格式
INT SHIFTRIGHTUNSIGNED(TINYINT|SMALLINT|INT number1, INT number2) BIGINT SHIFTRIGHTUNSIGNED(BIGINT number1, INT number2)
- 命令说明
该函数用于无符号按位右移(>>>)。
- 参数说明
- number1:TINYINT、SMALLINT、INT或BIGINT整型数据。
- number2:INT整型数据。
- 返回值说明
返回INT或BIGINT类型。
- 示例
SHIFTRIGHTUNSIGNED(8,2)=2 //8的二进制无符号右移2位(8>>>2,1000右移两位是0010)。 SHIFTRIGHTUNSIGNED(-14,2)=1073741820 //-14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是00111111 11111111 11111111 11111100)。
FORMAT_NUMBER
- 命令格式
STRING FORMAT_NUMBER(FLOAT|DOUBLE|DECIMAL expr1, expr2)
- 命令说明
将数字转化为指定格式的字符串。
- 参数说明
- expr1:需要格式化的数据。
- expr2:需要转化的目标格式。可以为INT类型,指定需要保留小数位数。也可以为类似
#,###,###.##
格式描述。- 如果expr2>0,则四舍五入到小数点后指定位数。
- 如果expr2=0,则没有小数点或小数部分。
- 如果expr2<0,或者expr2>340,则返回异常。
- 返回值说明
返回STRING类型数据。
- 示例
SELECT FORMAT_NUMBER(5.230134523424545456,3);//返回5.230。 SELECT FORMAT_NUMBER(12332.123456, '#,###,###,###.###');//返回12,332.123。
WIDTH_BUCKET
- 命令格式
WIDTH_BUCKET(NUMERIC expr, NUMERIC min_value, NUMERIC max_value, INT num_buckets)
- 命令说明
设定分组范围的最小值、最大值和分组个数,构建指定个数的大小相同的分组,返回指定字段值落入的分组编号。支持的数据类型为BIGINT、INT、FLOAT、DOUBLE、DECIMAL以及数据类型2.0的DECIMAL(precision,scale),详情请参见2.0数据类型版本。
- 参数说明
- expr:需要判断分组编号的字段。
- min_value:分组范围最小值。
- max_value:分组范围最大值,最大值必须比最小值大。
- num_buckets:分组个数,必须大于0。
- 返回值说明
返回值为BIGINT类型,范围为0到设定的分组个数+1。如果expr值小于min_value,返回0。如果expr大于max_value,返回设定的分组个数+1。如果字段值为NULL,分组编号返回值也为NULL。其他情况返回字段值落入的分组编号。字段值对应的分组编号取值规则为
FLOOR( num_buckets * (expr - min_value)/(max_value - min_value) + 1)
。 - 示例
SELECT key,value,WIDTH_BUCKET(value,100,500,5) as value_group FROM VALUES (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) AS t(key,value); --返回结果。 +-------+--------+-------------+ | key | value | value_group | +-------+--------+-------------+ | 1 | 99 | 0 | | 2 | 100 | 1 | | 3 | 199 | 2 | | 4 | 200 | 2 | | 5 | 499 | 5 | | 6 | 500 | 6 | | 7 | 501 | 6 | | 8 | \N | \N | +-------+--------+-------------+
在文档使用中是否遇到以下问题
更多建议
匿名提交