配置SQL分析任务时,需编写SQL语句,以查询和调度产出所需数据。本文介绍SQL分析任务支持的函数。
背景信息
SQL分析任务的更多信息,请参见SQL分析概述。
本文介绍SQL分析任务支持的以下函数。
时间和日期函数
函数名 | 返回类型 | 描述 | 用例 | 结果 |
current_date | DATE | 获取当前日期。 |
| 2020-05-03 |
current_timestamp | TIMESTAMPTZ | 获取当前事务的开始时刻。 说明 在事务的整个运行周期内不改变。 |
| 2020-05-03 06:33:36.113682+08 |
clock_timestamp() | TIMESTAMPTZ | 获取当前时刻。 说明 在同一条命令中也会发生变化。 |
| 2020-05-03 06:32:28.814918+08 |
localtimestamp | TIMESTAMP | 获取不包含时区的当前时间。 |
| 2020-08-21 12:02:21.178031 |
now() | TIMESTAMPTZ | 获取当前事务的开始时刻,等效于transaction_timestamp()。 说明 在事务的整个运行周期内不改变。 |
| 2020-05-03 06:38:48.492168+08 |
statement_timestamp() | TIMESTAMPTZ | 获取当前语句的开始时刻。 说明 在事务的不同命令中返回值不同。 |
| 2020-05-05 06:39:11.125957+08 |
timeofday() | TEXT | 获取当前时刻。 说明 与clock_timestamp()类似,但时间使用格式化文本字符串格式。 |
| Tue May 03 06:39:43.195368 2020 CST |
transaction_timestamp() | TIMESTAMPTZ | 获取当前事务的开始时刻,等效于current_timestamp。 说明 在事务的整个运行周期内不改变。 |
| 2020-05-03 06:40:08.023623+08 |
字符串函数
函数名 | 返回类型 | 描述 | 用例 | 结果 |
to_number(text, text) | NUMERIC | 转换字符串为数字。 |
| 12454.8 |
string_agg(expression,delimiter) | TEXT | 使用指定分隔符将指定表达式的非空值串联成字符串。可作为列转行使用。 |
|
|
string_agg (expression [ order_by_clause ] ) [ FILTER ( WHERE filter_clause ) ] | TEXT | 使用指定分隔符将指定表达式的非空值串联成字符串。可作为列转行使用,同时在表达式中支持filter过滤条件。 说明 Hologres V1.3及以上版本支持。 |
|
|
regexp_split_to_table(string text, pattern text) | TEXT | 字符串分割函数,将分割出的数据转换成行,可作为行转列使用。 |
|
|
regexp_split_to_array(string text, pattern text) | ARRAY | 字符串分割函数,将分割出的数据转换成数组,可作为行转数组使用。 |
|
|
replace(string text, old_text, new_text) | TEXT | 将字符串中原有的子字串替换成新的子字串。 |
|
|
regexp_replace(string, regex, replacement[, flags]) | TEXT | 通过POSIX 正则表达式将子字符串替换为新的子字符串。 |
|
|
regexp_match(string text, pattern text) | ARRAY | 对字符串按正则表达式进行匹配,如果存在则会在结果数组中表示出来。 |
|
|
row_to_json | JSON | 将一行数据转换为JSON格式。 说明 Hologres V1.3及以上版本支持。 |
|
|
row() | ARRAY/TEXT | 返回公式所在的行号。 说明 Hologres V1.3及以上版本支持。 |
|
|
函数名 | 返回类型 | 描述 | 用例 | 结果 |
split_part(string text ,delimiter text,n int) | TEXT | 使用指定的分隔符拆分字符串,并返回第n个字串。 |
|
|
concat(str "any" [, str "any" [, ...] ]) | TEXT | 连接所有参数。忽略NULL参数。 |
|
|
concat_ws(sep text, str "any" [, str "any" [, ...] ]) | TEXT | 使用分隔符连接除第一个参数外的所有参数。 说明 第一个参数用作分隔符字符串。忽略NULL参数。 |
|
|
substring(string [from int] [for int]) | TEXT | 从字符串中找出指定的子字符串。 |
|
|
substring(string from pattern) | TEXT | 从字符串中找出与POSIX正则表达式匹配的子字符串。 |
|
|
substring(string from pattern for escape) | TEXT | 从字符串中找出与SQL正则表达式匹配的子字符串。 |
|
|
left(string text, n int) | TEXT | 返回字符串的前n个字符。n为负数时,返回除最后 |
|
|
right(string text, n int) | TEXT | 返回字符串的后n个字符。n为负数时,返回除前 |
|
|
string || string | TEXT | 连接两个字符串。 |
| HologreSQL |
bit_length(string) | TEXT | 获取字符串的位长度。 |
| 32 |
char_length(string) | TEXT | 获取字符串的字符长度。 |
| 4 |
length(string) | TEXT | 获取字符串的字节长度,使用utf8编码字符集时,一个汉字是3字节,一个数字或字母算一个字节。 说明 length函数的计算结果和char_length函数相同,因为英文字符的个数和所占字节相同,一个字符占一个字节。 |
| 4 |
lower(string) | TEXT | 转换字符串为小写格式。 |
| tom |
upper(string) | TEXT | 转换字符串为大写格式。 |
| TOM |
initcap(string) | TEXT | 将每个单词的第一个字母转换为大写,其余字母转换为小写。 说明 单词是由一系列字母和数字组成的字符,使用非字母或数字分隔。 |
| Hi Thomas |
octet_length(string) | TEXT | 返回字符串的字节数。 |
| 4 |
position(substring in string) | TEXT | 查找子字符串在字符串中的位置。 |
| 3 |
strpos(string, substring) | TEXT | 查找子字符串在目标字符串中的位置。 |
| 2 |
trim([leading | trailing | both] [characters] from string) | TEXT | 从字符串String的开始、结尾或两端删除仅包含Characters中字符的最长字符串。 说明
|
| Tom |
btrim(string text [, characters text]) | TEXT | 从字符串String的开始和结尾删除仅包含Characters中字符的最长字符串。 说明 默认仅包含Characters中字符的最长字符串为空格。 |
| trim |
ltrim(string text [, characters text]) | TEXT | 从字符串String的开始删除只包含Characters 中字符的最长的字符串。 说明 如果没有指定Characters的值,则Characters默认是空格。 |
| test |
rtrim(string text [, characters text]) | TEXT | 从字符串String的末尾删除只包含Characters中字符的最长的字符串。 说明 如果没有指定Characters的值,则Characters默认是空格。 |
| test |
lpad(string text, length int [, fill text]) | TEXT | 用Fill填充在String头部,将String填充为长度是Length的字符串。 说明
|
| xyxhi |
rpad(string text, length int [, fill text]) | TEXT | 对字符串的右边进行填充,填充内容为指定长度的字符串。 |
| hixyx |
md5(string) | TEXT | 计算String的MD5哈希值。结果表示为十六进制的形式。 |
| 900150983cd24fb0d6963f7d28e17f72 |
parse_ident(quali_iden text [,...] ) | TEXT | 解析字符串。 |
| {SomeSchema,sometable} |
quote_ident(string text) | TEXT | 使用String作为合法的SQL标识符。 说明 当字符串包含非标识符字符或者字符串会转换大小写时,需要添加引号。 |
| "Foo bar" |
quote_literal(string text) | TEXT | 将String转换为合法的SQL语句字符串的常量形式。 |
| 'O''Reilly' |
ascii(string) | TEXT | 返回参数第一个字符的ASCII码。 |
| 120 |
chr(int) | TEXT | 返回指定编码值对应的字符。 说明 参数必须是合法的ASCII或UTF8编码值,并且参数值不能为0。 |
| A |
repeat(string text, number int) | TEXT | 将String重复指定number次。 |
| PgPgPgPg |
starts_with(string, prefix) | BOOLEAN | 如果字符串以前缀开头,则返回true;否则返回false。 |
| true |
to_hex(number int or bigint) | TEXT | 将数字转换为十六进制的表示形式。 |
| 7fffffff |
translate(string text, from text, to text) | TEXT | 使用字符串To中的字符替换From中的字符。 |
| a2x5 |
数学函数
函数名 | 描述 | 用例 | 结果 |
abs(bigint) | 返回BIGINT类型表达式的绝对值。 | abs(-17) | 17 |
abs(int) | 返回INT类型表达式的绝对值。 | abs(-17) | 17 |
abs(float8) | 返回FLOAT8类型表达式的绝对值。 | abs(-17.4) | 17.4 |
abs(float4) | 返回FLOAT4类型表达式的绝对值。 | abs(-17.4) | 17.4 |
abs(numeric) | 返回NUMERIC类型表达式的绝对值。 | abs(-17.4) | 17.4 |
cbrt(dp) | 返回DP类型表达式的立方根。 | cbrt(27.0) | 3.0000000000000004 |
ceil(dp ) | 对DP类型的表达式向上取整。 | ceil(-42.8) | -42.0 |
ceil(numeric) | 对NUMERIC类型的表达式向上取整。 | ceil(-42.8) | -42.0 |
ceiling(dp ) | 对DP类型的表达式向上取整。 | ceil(-42.8) | -42.0 |
ceiling(numeric) | 对NUMERIC类型的表达式向上取整。 | ceil(-42.8) | -42.0 |
degrees(dp) | 将DP类型表达式的弧度转换为角度。 | degrees(0.5) | 28.64788975654116 |
exp(dp) | 返回DP类型表达式的指数。 | exp(1.0) | 2.718281828459045 |
exp(numeric) | 返回NUMERIC类型表达式的指数。 | exp(1.0) | 2.718281828459045 |
floor(dp ) | 对DP类型表达式向下取整。 | floor(-42.8) | -43.0 |
floor(numeric) | 对NUMERIC类型表达式向下取整。 | floor(-42.8) | -43.0 |
ln(dp) | 返回DP类型表达式的自然对数。 | ln(2.0) | 0.6931471805599453 |
ln(numeric) | 返回NUMERIC类型表达式的自然对数。 | ln(2.0) | 0.6931471805599453 |
log(dp) | 返回DP类型表达式的常用对数。 | log(100.0) | 2.0 |
log(numeric) | 返回NUMERIC类型表达式的常用对数。 | log(100.0) | 2.0 |
log(b numeric, x numeric) | 返回NUMERIC类型表达式的对数。 | log(2.0, 64.0) | 6.0 |
mod(bigint, x) | 求BIGINT类型表达式除以x的余数。 | mod(9,4) | 1 |
mod(int, x) | 求INT类型表达式除以x的余数。 | mod(9,4) | 1 |
pi() | 返回π常量。 | pi() | 3.141592653589793 |
power(a dp, b dp) | 求a的b次幂,a和b使用DP类型的表达式。 | power(9.0, 3.0) | 729.0 |
power(a numeric, b numeric) | 求a的b次幂,a和b使用NUMERIC类型的表达式。 | power(9.0, 3.0) | 729.0 |
radians(dp) | 将DP类型表达式的角度转换为弧度。 | radians(45.0) | 0.7853981633974483 |
random() | 获取一个随机数,返回值范围为[0.0,1.0)。 | random() | 0.3977345246821642 |
round(dp ) | 返回DP类型表达式四舍五入后的整数值。 | round(42.4) | 42.0 |
round(numeric) | 返回NUMERIC类型表达式四舍五入后的整数值。 | round(42.4) | 42.0 |
round(v numeric, s int) | 保留s位小数,计算的类型必须是numeric类型。 | round((100/400::numeric),4); | 0.2500 |
sign(dp ) | 返回DP类型表达式的符号。参数值大于0返回1,小于0返回 -1 ,等于0返回0。 | sign(-8.4) | -1 |
sign(numeric) | 返回NUMERIC类型表达式的符号。参数值大于0返回1,小于0返回 -1 ,等于0返回0。 | sign(-8.4) | -1 |
sqrt(dp) | 返回DP类型表达式的平方根。 | sqrt(2.0) | 1.414213562373095 |
sqrt(numeric) | 返回NUMERIC类型表达式的平方根。 | sqrt(2.0) | 1.414213562373095 |
trunc(dp) | 去掉DP类型表达式的小数位。 | trunc(42.8) | 42.0 |
trunc(numeric) | 去掉NUMERIC类型表达式的小数位。 | trunc(42.8) | 42.0 |
trunc(v numeric, s int) | 截断NUMERIC类型表达式的小数位置到s位。 | trunc(42.4382, 2) | 42.43 |
width_bucket(operand numeric, b1 numeric, ...) | 返回OPERAND在BUCKET中的位置。 | width_bucket(5.35, 0.024, 10.06, 5) | 3 |
聚合函数
函数名 | 描述 | 用例 | 结果 |
array_agg(anyelement) | 将表达式的值串联到数组中。暂不支持JSON、JSONB、TIMETZ、INTERVAL、INET、OID、UUID数据类型和数组类型。 | array_agg(c1) |
|
avg(bigint) | 求BIGINT类型表达式中非空值的平均值。 | avg(c1) | 2.000000 |
avg(float8) | 求FLOAT8类型表达式中非空值的平均值。 | avg(c1) | 2.000000 |
avg(float4) | 求FLOAT4类型表达式中非空值的平均值。 | avg(c1) | 2.000000 |
avg(int) | 求INT类型表达式中非空值的平均值。 | avg(c1) | 2.000000 |
bit_and(bigint) | 对BIGINT类型表达式中的非空值执行按位与运算。 | bit_and(c1) | 0 |
bit_and(int) | 对INT类型表达式中的非空值执行按位与运算。 | bit_and(c1) | 0 |
bit_or(bigint) | 对BIGINT类型表达式中的非空值执行按位或运算。 | bit_or(c1) | 3 |
bit_or(int) | 对INT类型表达式中的非空值执行按位或运算。 | bit_or(c1) | 3 |
bool_and(bool) | 如果BOOL表达式的值均为TRUE,则函数结果返回TRUE,否则返回FALSE。 | bool_and(c1) | FALSE |
bool_or(bool) | 如果BOOL表达式的值包含TRUE,则函数结果返回TRUE,否则返回FALSE。 | bool_or(c1) | TRUE |
count(*) | 返回指定表的行数。 | count(*) | 3 |
count(bigint) | 求BIGINT类型表达式的输入行数。 说明 BIGINT类型表达式的值不为NULL。 | count(c1) | 3 |
count(numeric) | 求NUMERIC类型表达式的输入行数。 说明 NUMERIC类型表达式的值不为NULL。 | count(c1) | 3 |
every(bool) | 如果BOOL表达式的值均为TRUE,则函数结果返回TRUE,否则返回FALSE。 | 无 | 无 |
max(bigint) | 求BIGINT类型表达式的最大值。 | max(c1) | 3 |
max(float8) | 求FLOAT8类型表达式的最大值。 | max(c1) | 3.0 |
max(float4) | 求FLOAT4类型表达式的最大值。 | max(c1) | 3.0 |
max(int) | 求INT类型表达式的最大值。 | max(c1) | 3 |
max(numeric) | 求NUMERIC类型表达式的最大值。 | max(c1) | 3.0 |
min(bigint) | 求BIGINT类型表达式的最小值。 | min(c1) | 1 |
min(float8) | 求FLOAT8类型表达式的最小值。 | min(c1) | 1.0 |
min(float4) | 求FLOAT4类型表达式的最小值。 | min(c1) | 1.0 |
min(int) | 求INT类型表达式的最小值。 | min(c1) | 1 |
min(numeric) | 求NUMERIC类型表达式的最小值。 | min(c1) | 1.0 |
sum(bigint) | 求BIGINT类型表达式所有值的总和。 | sum(c1) | 6 |
sum(float8) | 求FLOAT8类型表达式所有值的总和。 | sum(c1) | 6.0 |
sum(float4) | 求FLOAT4类型表达式所有值的总和。 | sum(c1) | 6.0 |
sum(int) | 求INT类型表达式所有值的总和。 | sum(c1) | 6 |
sum(numeric) | 求NUMERIC类型表达式所有值的总和。 | sum(c1) | 6.0 |
string_agg(expression, delimiter) | 使用指定分隔符将指定表达式的非空值串联成字符串。 | string_agg(c1, '-') | a-b-c |
corr(Y, X) | 求相关系数。 | corr(c1, c2) | 无 |
covar_pop(Y, X) | 求总体协方差。 | covar_pop(c1, c2) | 无 |
covar_samp(Y, X) | 求样本协方差。 | covar_samp(c1, c2) | 无 |
regr_avgx(Y, X) | 求自变量的平均值。 | reg_avgx(c1, c2) | 无 |
regr_avgy(Y, X) | 求因变量的平均值。 | reg_avgy(c1, c2) | 无 |
regr_count(Y, X) | 求两个输入参数中都不为空的行数。 | regr_count(c1, c2) | 无 |
regr_intercept(Y, X) | 求由(X,Y)确定的最小方差拟合的纵轴截距。 | reg_intercept(c1, c2) | 无 |
regr_r2(Y, X) | 求相关系数的平方。 | regr_r2(c1, c2) | 无 |
regr_slope(Y, X) | 求由(X,Y)确定的最小方差拟合的斜率。 | regr_slope(c1, c2) | 无 |
regr_sxx(Y, X) | 求自变量的平方和 | regr_sxx(c1, c2) | 无 |
regr_sxy(Y, X) | 求自变量和因变量的乘积和 | regr_sxy(c1, c2) | 无 |
regr_syy(Y, X) | 求因变量的平方和 | regr_syy(c1, c2) | 无 |
stddev(int) | 求INT类型表达式的样本标准差。 | stddev(c1) | 无 |
stddev(numeric) | 求NUMERIC类型表达式的样本标准差。 | stddev(c1) | 无 |
stddev(float8) | 求FLOAT8类型表达式的样本标准差。 | stddev(c1) | 无 |
stddev_pop(int) | 求INT类型表达式的总体标准差。 | stddev_pop(c1) | 无 |
stddev_pop(numeric) | 求NUMERIC类型表达式的总体标准差。 | stddev_pop(c1) | 无 |
stddev_pop(float8) | 求FLOAT8类型表达式的总体标准差。 | stddev_pop(c1) | 无 |
stddev_samp(int) | 求INT类型表达式的样本标准差。 | stddev_samp(c1) | 无 |
stddev_samp(numeric) | 求NUMERIC类型表达式的样本标准差。 | stddev_samp(c1) | 无 |
stddev_samp(float8) | 求FLOAT8类型表达式的样本标准差。 | stddev_samp(c1) | 无 |
variance(int) | 求INT类型表达式的样本方差。 | variance(c1) | 无 |
variance(numeric) | 求NUMERIC类型表达式的样本方差。 | variance(c1) | 无 |
var_pop(float8) | 求FLOAT8类型表达式的总体方差。 | var_pop(c1) | 无 |
var_pop(int) | 求INT类型表达式的总体方差。 | var_pop(c1) | 无 |
var_pop(numeric) | 求NUMERIC类型表达式的总体方差。 | var_pop(c1) | 无 |
var_samp(float8) | 求FLOAT8类型表达式的样本方差。 | var_samp(c1) | 无 |
var_samp(int) | 求INT类型表达式的样本方差。 | var_samp(c1) | 无 |
var_samp(numeric) | 求NUMERIC类型表达式的样本方差。 | var_samp(c1) | 无 |
- 本页导读 (1)