文档下载建议反馈入口

  • 特殊语法形式
  • 条件和类函数运算符
  • 内置函数
  • 聚合函数
  • 分组窗口函数
  • 地理函数

时序数据函数

数据库函数是一组预定义的操作,用于对数据执行特定的计算或转换。

特殊语法形式

为了兼容 SQL 标准,KWDB 支持以下函数,这些函数与常规的内置函数具有等效功能。

说明

避免在 SUBSTRING 函数中使用转义字符 +

特殊形式等价于
AT TIME ZONEtimezone()
CURRENT_CATALOGcurrent_database()
COLLATION FORpg_collation_for()
CURRENT_DATEcurrent_date()
CURRENT_ROLEcurrent_user()
CURRENT_SCHEMAcurrent_schema()
CURRENT_TIMESTAMPcurrent_timestamp()
CURRENT_TIMEcurrent_time()
CURRENT_USERcurrent_user()
EXTRACT(<part> FROM <value>)extract("<part>", <value>)
EXTRACT_DURATION(<part>FROM <value>)extract_duration("<part>",<value>)
OVERLAY(<text1> PLACING <text2> FROM <int1> FOR <int2>)overlay(<text1>,<text2>, <int1>, <int2>)
OVERLAY(<text1> PLACING <text2> FROM <int>)overlay(<text1>,<text2>, <int>)
POSITION(<text1> IN <text2>)strpos(<text2>, <text1>)
SESSION_USERcurrent_user()
SUBSTRING(<text>FOR<int1>FROM <int2>)substring(<text>,<int2>, <int1>)
SUBSTRING(<text> FOR <int>)substring(<text>, 1, <int>)
SUBSTRING(<text>FROM<int1>FOR<int2>)substring(<text>,<int1>, <int2>)
SUBSTRING(<text> FROM <int>)substring(<text>, <int>)
TRIM(<text1> FROM <text2>)btrim(<text2>, <text1>)
TRIM(<text1>, <text2>)btrim(<text1>, <text2>)
TRIM(FROM <text>)btrim(<text>)
TRIM(LEADING <text1> FROM <text2>)ltrim(<text2>, <text1>)
TRIM(LEADING FROM <text>)ltrim(<text>)
TRIM(TRAILING <text1> FROM <text2>)rtrim(<text2>, <text1>)
TRIM(TRAILING FROM <text>)rtrim(<text>)
USERcurrent_user()

条件和类函数运算符

具有特殊评估规则的运算符如下:

运算符描述
CAST(...)类型转换
说明
- 时序表建表时,如果时间戳列的数据类型设置为 TIMESTAMP,系统会自动处理为 TIMESTAMPTZ,对该列的转换将按照数据库设置的时区进行转换。
- 使用 CAST 函数将 CHAR、NCHAR 或 VARCHAR 数据类型转换为长度不同的 CHAR、NCHAR 或 VARCHAR 数据类型时,如果目标长度不匹配原始字符串的实际字节数,服务端可能会返回乱码,客户端(如 KaiwuDB JDBC 或 KaiwuDB 开发者中心)会提示报错。
IFNULL(...)COALESCE 限制为两个操作数的别名
NULLIF(...)NULL 有条件地返回

内置函数

日期和时间函数

说明

所有时序引擎支持的时间戳类型相关的函数的输出结果,最高可支持纳秒精度。

函数 → 返回值描述
age(end: timestamptz, begin: timestamptz) → interval计算 begin 和 end 之间的时间间隔。
age(val: timestamptz) → interval计算 val 与当前时间之间的间隔。
current_timestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
current_timestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
date_trunc(element: string, input: timestamp) → timestamp将输入截断成精度为 element,将所有无意义的字段设为 0(或对于日期和月份则设为 1)。兼容元素:millennium、century、decade、year、quarter、month、week、day、hour、minute、second、millisecond、microsecond。
date_trunc(element: string, input: timestamptz) → timestamptz将输入截断成精度为 element,将所有无意义的字段设为 0(或对于日期和月份则设为 1)。兼容元素:millennium、century、decade、year、quarter、month、week、day、hour、minute、second、millisecond、microsecond。
experimental_strftime(input: timestamp, extract_format: string) → string从输入中提取并格式化成 extract_format 标识的时间,extract_format 使用标准的 strftime 表示法(尽管不支持所有格式)。
experimental_strftime(input: timestamptz, extract_format: string) → string从输入中提取并格式化成 extract_format 标识的时间,extract_format 使用标准的 strftime 表示法(尽管不支持所有格式)。
extract(element: string, input: timestamp) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、isoyear、quarter、month、week、dayofweek、isodow、dayofyear、julian、hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
extract(element: string, input: timestamptz) → float8从输入中提取 element。兼容元素:millennium、century、decade、year、isoyear、quarter、month、week、dayofweek、isodow、dayofyear、julian、hour、minute、second、millisecond、microsecond、epoch、timezone、timezone_hour、timezone_minute。
localtimestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp(precision: int8) → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
localtimestamp(precision: int8) → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
now() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
now() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
statement_timestamp() → timestamp返回当前语句的开始时间戳。
statement_timestamp() → timestamptz返回当前语句的开始时间戳。
timeofday() → string返回某个集群节点的当前系统时间。
time_bucket(timestamp_column: timestamp, interval: STRING) → timestamp时间桶函数,支持时间戳对齐。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
time_bucket(timestamp_column: timestamptz, interval: STRING) → timestamptz时间桶函数,支持时间戳对齐。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
time_bucket_gapfill(timestamp_column: timestamp, interval: STRING) → timestamp时间桶函数,根据时间间隔对时间戳进行对齐,并填充缺失的时间戳行。该函数必须与 GROUP BY 配合使用。相关使用说明和示例,参见插值查询
time_bucket_gapfill() 函数也可以和 interpolate() 函数配合使用,填充缺失的时间戳行的同时对指定数据列进行补值。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
time_bucket_gapfill(timestamp_column: timestamptz, interval: STRING) → timestamptz时间桶函数,根据时间间隔对时间戳进行对齐,并填充缺失的时间戳行。该函数必须与 GROUP BY 配合使用。相关使用说明和示例,参见插值查询
time_bucket_gapfill() 函数也可以和 interpolate() 函数配合使用,填充缺失的时间戳行的同时对指定数据列进行补值。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
time_bucket_gapfill(timestamp_column: timestamp, interval: int8) → timestamp时间桶函数,根据时间间隔对时间戳进行对齐,并填充缺失的时间戳行。该函数必须与 GROUP BY 配合使用。相关使用说明和示例,参见插值查询
time_bucket_gapfill() 函数也可以和 interpolate() 函数配合使用,填充缺失的时间戳行的同时对指定数据列进行补值。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
time_bucket_gapfill(timestamp_column: timestamptz, interval: int8) → timestamptz时间桶函数,根据时间间隔对时间戳进行对齐,并填充缺失的时间戳行。该函数必须与 GROUP BY 配合使用。相关使用说明和示例,参见插值查询
time_bucket_gapfill() 函数也可以和 interpolate() 函数配合使用,填充缺失的时间戳行的同时对指定数据列进行补值。
参数说明:
- timestamp_column:时间戳列。
- interval:时间间隔,支持的单位包括纳秒、微秒、毫秒、秒、分、小时、天、周、月、年。目前,KWDB 不支持复合时间格式,如 1d1h
各时间单位支持的输入格式如下所示:
- 纳秒:nsnsecnsecsnanosecondnanoseconds
- 微秒:ususecusecsmicrosecondmicroseconds
- 毫秒:msmsecmsecsmillisecondmilliseconds
- 秒:ssecsecssecondseconds
- 分:mminminsminuteminutes
- 小时:hhrhrshourhours
- 天:ddaydays
- 周:wweekweeks
- 月:monmonsmonthmonths
- 年:yyryrsyearyears
transaction_timestamp() → timestamp返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。
transaction_timestamp() → timestamptz返回当前事务的时间。该值基于事务开始时选择的时间戳,并且在整个事务中保持不变。此时间戳与并发事务的提交顺序无关。

数学和数值函数

函数 → 返回值描述
abs(val: float4) → float4计算 val 的绝对值。
abs(val: float8) → float8计算 val 的绝对值。
abs(val: int2) → int2计算 val 的绝对值。
abs(val: int4) → int4计算 val 的绝对值。
abs(val: int8) → int8计算 val 的绝对值。
acos(val: float4) → float8计算 val 的反余弦值。
acos(val: float8) → float8计算 val 的反余弦值。
asin(val: float4) → float8计算 val 的反正弦值。
asin(val: float8) → float8计算 val 的反正弦值。
atan(val: float4) → float8计算 val 的反正切值。
atan(val: float8) → float8计算 val 的反正切值。
atan2(x: float4, y: float4) → float8计算 x / y 的反正切。
atan2(x: float4, y: float8) → float8计算 x / y 的反正切。
atan2(x: float8, y: float4) → float8计算 x / y 的反正切。
atan2(x: float8, y: float8) → float8计算 x / y 的反正切。
cbrt(val: float4) → float8计算 val 的立方根(∛)。
cbrt(val: float8) → float8计算 val 的立方根(∛)。
ceil(val: float4) → float8计算大于等于 val 的最小整数。
ceil(val: float8) → float8计算大于等于 val 的最小整数。
ceil(val: int2) → float8计算大于等于 val 的最小整数。
ceil(val: int4) → float8计算大于等于 val 的最小整数。
ceil(val: int8) → float8计算大于等于 val 的最小整数。
ceiling(val: float4) → float8计算大于等于 val 的最小整数。
ceiling(val: float8) → float8计算大于等于 val 的最小整数。
ceiling(val: int2) → float8计算大于等于 val 的最小整数。
ceiling(val: int4) → float8计算大于等于 val 的最小整数。
ceiling(val: int8) → float8计算大于等于 val 的最小整数。
cos(val: float4) → float8计算 val 的余弦值。
cos(val: float8) → float8计算 val 的余弦值。
cot(val: float4) → float8计算 val 的余切值。
cot(val: float8) → float8计算 val 的余切值。
crc32c(string...) → int8使用 Castagnoli 多项式计算 CRC-32 哈希值。
crc32ieee(string...) → int8使用 IEEE 多项式计算 CRC-32 哈希值。
degrees(val: float4) → float8将 val 作为弧度值转换为度数值。
degrees(val: float8) → float8将 val 作为弧度值转换为度数值。
div(x: float4, y: float4) → float8计算 x / y 的整数商。
div(x: float4, y: float8) → float8计算 x / y 的整数商。
div(x: float8, y: float4) → float8计算 x / y 的整数商。
div(x: float8, y: float8) → float8计算 x / y 的整数商。
div(x: int2, y: int2) → int8计算 x / y 的整数商。
div(x: int2, y: int4) → int8计算 x / y 的整数商。
div(x: int2, y: int8) → int8计算 x / y 的整数商。
div(x: int4, y: int2) → int8计算 x / y 的整数商。
div(x: int4, y: int4) → int8计算 x / y 的整数商。
div(x: int4, y: int8) → int8计算 x / y 的整数商。
div(x: int8, y: int2) → int8计算 x / y 的整数商。
div(x: int8, y: int4) → int8计算 x / y 的整数商。
div(x: int8, y: int8) → int8计算 x / y 的整数商。
exp(val: float4) → float8计算 e ^ val。
exp(val: float8) → float8计算 e ^ val。
floor(val: float4) → float8计算不大于 val 的最大整数。
floor(val: float8) → float8计算不大于 val 的最大整数。
floor(val: int2) → float8计算不大于 val 的最大整数。
floor(val: int4) → float8计算不大于 val 的最大整数。
floor(val: int8) → float8计算不大于 val 的最大整数。
fnv32(string...) → int8计算一组值的 32 位 FNV-1 哈希值。
fnv32a(string...) → int8计算一组值的 32 位 FNV-1a 哈希值。
fnv64(string...) → int8计算一组值的 64 位 FNV-1 哈希值。
fnv64a(string...) → int8计算一组值的 64 位 FNV-1a 哈希值。
isnan(val: float4) → bool如果 val 是 NaN,则返回 true,否则返回 false
isnan(val: float8) → bool如果 val 是 NaN,则返回 true,否则返回 false
ln(val: float4) → float8计算 val 的自然对数。
ln(val: float8) → float8计算 val 的自然对数。
log(b: float4, x: float4) → float8计算 val 的指定基数的 log。
log(b: float4, x: float8) → float8计算 val 的指定基数的 log。
log(b: float8, x: float4) → float8计算 val 的指定基数的 log。
log(b: float8, x: float8) → float8计算 val 的指定基数的 log。
log(val: float4) → float8计算 val 的基数为 10 的 log。
log(val: float8) → float8计算 val 的基数为 10 的 log。
mod(x: float4, y: float4) → float8计算 x%y。
mod(x: float4, y: float8) → float8计算 x%y。
mod(x: float8, y: float4) → float8计算 x%y。
mod(x: float8, y: float8) → float8计算 x%y。
mod(x: int2, y: int2) → int8计算 x%y。
mod(x: int2, y: int4) → int8计算 x%y。
mod(x: int2, y: int8) → int8计算 x%y。
mod(x: int4, y: int2) → int8计算 x%y。
mod(x: int4, y: int4) → int8计算 x%y。
mod(x: int4, y: int8) → int8计算 x%y。
mod(x: int8, y: int2) → int8计算 x%y。
mod(x: int8, y: int4) → int8计算 x%y。
mod(x: int8, y: int8) → int8计算 x%y。
pi() → float8返回 pi 的值(3.141592653589793)。
pow(x: float4, y: float4) → float8计算 x^y。
pow(x: float4, y: float8) → float8计算 x^y。
pow(x: float8, y: float4) → float8计算 x^y。
pow(x: float8, y: float8) → float8计算 x^y。
pow(x: int2, y: int2) → int8计算 x^y。
pow(x: int2, y: int4) → int8计算 x^y。
pow(x: int2, y: int8) → int8计算 x^y。
pow(x: int4, y: int2) → int8计算 x^y。
pow(x: int4, y: int4) → int8计算 x^y。
pow(x: int4, y: int8) → int8计算 x^y。
pow(x: int8, y: int2) → int8计算 x^y。
pow(x: int8, y: int4) → int8计算 x^y。
pow(x: int8, y: int8) → int8计算 x^y。
power(x: float4, y: float4) → float8计算 x^y。
power(x: float4, y: float8) → float8计算 x^y。
power(x: float8, y: float4) → float8计算 x^y。
power(x: float8, y: float8) → float8计算 x^y。
power(x: int2, y: int2) → int8计算 x^y。
power(x: int2, y: int4) → int8计算 x^y。
power(x: int2, y: int8) → int8计算 x^y。
power(x: int4, y: int2) → int8计算 x^y。
power(x: int4, y: int4) → int8计算 x^y。
power(x: int4, y: int8) → int8计算 x^y。
power(x: int8, y: int2) → int8计算 x^y。
power(x: int8, y: int4) → int8计算 x^y。
power(x: int8, y: int8) → int8计算 x^y。
radians(val: float4) → float8将 val 作为度数值转换为弧度值。
radians(val: float8) → float8将 val 作为度数值转换为弧度值。
random() → float8返回 0 到 1 之间的随机浮点数。
round(val: float4) → float8使用四舍六入五成双(half to even)(即银行家)规则将 val 舍入到最接近的整数。
round(val: float8) → float8使用四舍六入五成双(half to even)(即银行家)规则将 val 舍入到最接近的整数。
sign(val: float4) → float8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: float8) → float8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int2) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int4) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sign(val: int8) → int8确定 val 的符号:
- 1 表示正。
- 0 表示值 0。
- -1 表示负。
sin(val: float4) → float8计算 val 的正弦值。
sin(val: float8) → float8计算 val 的正弦值。
sqrt(val: float4) → float8计算 val 的平方根。
sqrt(val: float8) → float8计算 val 的平方根。
tan(val: float4) → float8计算 val 的正切值。
tan(val: float8) → float8计算 val 的正切值。
trunc(val: float4) → float8截断 val 的十进制值。
trunc(val: float8) → float8截断 val 的十进制值。
width_bucket(operand: int8, b1: int2, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int2, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int2, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int4, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int2, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int4, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。
width_bucket(operand: int8, b1: int8, b2: int8, count: int8) → int8返回在直方图中为其分配操作数的存储桶编号,直方图具有跨越 B1 到 B2 的等宽存储桶计数。

字符串和字节函数

函数 → 返回值描述
bit_length(val: string) → int8计算数值的位数。
char_length(val: string) → int8计算数值占用的字符数。
character_length(val: string) → int8计算数值占用的字符数。
chr(val: int2) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
chr(val: int4) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
chr(val: int8) → string返回带有 val 中给出的代码的字符。ascii() 的反函数。
concat(string...) → string连接使用逗号(,)隔开的字符串列表。
initcap(val: string) → string将 val 的第一个字母大写。
left(input: string, return_set: int8) → string从 input 返回前 return_set 个字符。
length(val: string) → int8计算 val 中的字符数。
lower(val: string) → string将 val 中的所有字符转换为小写。
lpad(string: string, length: int8) → string在字符串的左侧添加双引号(""),以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
lpad(string: string, length: int8, fill: string) → string在字符串的左侧添加 fill,以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
ltrim(input: string, trim_chars: string) → string从输入的开头(左侧)删除 trim_chars 中包含的任何字符(递归应用)。例如,ltrim('doggie','od') 返回 ggie
ltrim(val: string) → string删除 val 开头(左侧)的所有空格。
octet_length(val: string) → int8计算数值占用的字节数。
right(input: string, return_set: int8) → string返回 input 中最后 return_set 个字符。
rpad(string: string, length: int8) → string在字符串的右侧添加双引号(""),以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
rpad(string: string, length: int8, fill: string) → string在字符串的右侧添加 fill,以填充字符串的长度。如果字符串的长度超过长度,则会被截断。
rtrim(input: string, trim_chars: string) → string从输入的末尾(右侧)删除 trim_chars 中包含的任何字符(递归应用)。例如,rtrim('doggie','ei') 返回 dogg
rtrim(val: string) → string从 val 的末端(右侧)移除所有空格。
substr(input: string, regex: string) → string返回与正则表达式 regex 匹配的 input 子字符串。提示:避免在函数中使用转义字符 +
substr(input: string, regex: string, escape_char: string) → string返回与正则表达式 regex 匹配的 input 子字符串,使用 escape_char 作为转义字符而不是作为正则表达式的特殊符号。提示:避免在函数中使用转义字符 +
substr(input: string, start_pos: int8) → string返回 start_posend_pos 之间的 input 子字符串(从 1 开始计数)。提示:避免在函数中使用转义字符 +
substr(input: string, start_pos: int8, length: int8) → string返回从 substr_pos 开始的 input 子字符串(从 1 开始计数)。提示:避免在函数中使用转义字符 +
substring(input: string, regex: string) → string返回与正则表达式匹配 regex 的 input 子字符串。提示:避免在函数中使用转义字符 +
substring(input: string, regex: string, escape_char: string) → string返回与正则表达式匹配 regex 的 input 子字符串,使用 escape_char 作为转义字符而不是作为正则表达式的特殊符号。提示:避免在函数中使用转义字符 +
substring(input: string, start_pos: int8) → string返回 start_posend_pos 之间的 input 子字符串(从 1 开始计数)。提示:避免在函数中使用转义字符 +
substring(input: string, start_pos: int8, length: int8) → string返回从 substr_pos 开始的 input 子字符串(从 1 开始计数)。提示:避免在函数中使用转义字符 +
upper(val: string) → string将 val 中的所有字符转换为大写字母。

聚合函数

说明

  • 避免 AVGSUM 函数的计算结果超过函数支持的最大范围。
  • 聚合查询与 GROUP BY 连用时,避免 GROUP BY 后的结果集行数过大。
函数 → 返回值描述
avg(arg1: float4) → float8计算选定值的平均值。
avg(arg1: float8) → float8计算选定值的平均值。
avg(arg1: INT2) → DECIMAL计算选定值的平均值。
avg(arg1: INT4) → DECIMAL计算选定值的平均值。
avg(arg1: INT8) → DECIMAL计算选定值的平均值。
count(arg1: anyelement) → INT8计算选定元素的数目。
diff(val: int2) → int2计算表中某列与前一行非 NULL 值之间的差值。格式为 diff (<expr>) OVER (PARTITION BY <column_list> ORDER BY <timestamp_column>)。其中时间戳列必须是首列时间戳列,以保证顺序正确且计算正确。支持以下操作符:+, -, *, /, %, //, |, ^。如果当前行的值为 NULL 或指定分区仅有两行数据且首行为 NULL,则返回 NULL。如果前一行为 NULL,则取前面最近的非 NULL 行进行计算。
注意:该函数暂时不支持嵌套函数,同一层查询中不可与其他聚合函数同时使用。
提示:单机部署时,如果 PARTITION BY 后的列为所有主标签列,有助于提升查询性能。
diff(val: int4) → int4计算表中某列与前一行非 NULL 值之间的差值。格式为 diff (<expr>) OVER (PARTITION BY <column_list> ORDER BY <timestamp_column>)。其中时间戳列必须是首列时间戳列,以保证顺序正确且计算正确。支持以下操作符:+, -, *, /, %, //, |, ^。如果当前行的值为 NULL 或指定分区仅有两行数据且首行为 NULL,则返回 NULL。如果前一行为 NULL,则取前面最近的非 NULL 行进行计算。
注意:该函数暂时不支持嵌套函数,同一层查询中不可与其他聚合函数同时使用。
提示:单机部署时,如果 PARTITION BY 后的列为所有主标签列,有助于提升查询性能。
diff(val: int8) → int8计算表中某列与前一行非 NULL 值之间的差值。格式为 diff (<expr>) OVER (PARTITION BY <column_list> ORDER BY <timestamp_column>)。其中时间戳列必须是首列时间戳列,以保证顺序正确且计算正确。支持以下操作符:+, -, *, /, %, //, |, ^。如果当前行的值为 NULL 或指定分区仅有两行数据且首行为 NULL,则返回 NULL。如果前一行为 NULL,则取前面最近的非 NULL 行进行计算。
注意:该函数暂时不支持嵌套函数,同一层查询中不可与其他聚合函数同时使用。
提示:单机部署时,如果 PARTITION BY 后的列为所有主标签列,有助于提升查询性能。
diff(val: float4) → float4计算表中某列与前一行非 NULL 值之间的差值。格式为 diff (<expr>) OVER (PARTITION BY <column_list> ORDER BY <timestamp_column>)。其中时间戳列必须是首列时间戳列,以保证顺序正确且计算正确。支持以下操作符:+, -, *, /, %, //, |, ^。如果当前行的值为 NULL 或指定分区仅有两行数据且首行为 NULL,则返回 NULL。如果前一行为 NULL,则取前面最近的非 NULL 行进行计算。
注意:该函数暂时不支持嵌套函数,同一层查询中不可与其他聚合函数同时使用。
提示:单机部署时,如果 PARTITION BY 后的列为所有主标签列,有助于提升查询性能。
diff(val: float8) → float8计算表中某列与前一行非 NULL 值之间的差值。格式为 diff (<expr>) OVER (PARTITION BY <column_list> ORDER BY <timestamp_column>)。其中时间戳列必须是首列时间戳列,以保证顺序正确且计算正确。支持以下操作符:+, -, *, /, %, //, |, ^。如果当前行的值为 NULL 或指定分区仅有两行数据且首行为 NULL,则返回 NULL。如果前一行为 NULL,则取前面最近的非 NULL 行进行计算。
注意:该函数暂时不支持嵌套函数,同一层查询中不可与其他聚合函数同时使用。
提示:单机部署时,如果 PARTITION BY 后的列为所有主标签列,有助于提升查询性能。
ELAPSED(ts_primary_key [, time_unit]) → float8统计指定统计周期内有数据覆盖的连续时间长度。与 TWA 函数配合使用,可以计算统计曲线下的面积。与 time_bucket 函数结合使用时,统计在给定时间范围内的每个时间窗口内有数据覆盖的时间范围。如未使用 time_bucket 函数,则返回整个给定时间范围的有数据覆盖的时间范围。ELAPSED 函数返回时间范围的绝对值除以时间间隔单位所得到的单位个数。
参数说明:
- ts_primary_key:时间戳列,必须是首列时间戳列,用于确定数据的存在范围。
- time_unit:时间间隔,支持的单位包括纳秒(ns)、微秒(us)、ms(毫秒)、秒(s)、分(m)、小时(h)、天(d)、周(w)。若未设置,则默认以毫秒为时间间隔单位。
first(val: float4) → float4获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: float8) → float8获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: INT2) → INT2获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: INT4) → INT4获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: INT8) → INT8获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: STRING) → STRING获取条件范围内的时间戳最小的一条数据(不包含空值 NULL)。
first(val: timestamp) → timestamp获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: timestamptz) → timestamptz获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: varbytes) →varbytes获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(val: varchar) →varchar获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first(*)→any element获取条件范围内时间戳最小的一条数据(不包含空值 NULL)。
first_row(val: float4) → float4获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: float8) → float8获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: INT2) → INT2获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: INT4) → INT4获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: INT8) → INT8获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: STRING) → STRING获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: timestamp) → timestamp获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: timestamptz) → timestamptz获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: varbytes) →varbytes获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(val: varchar) →varchar获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
first_row(*) →any element获取条件范围内时间戳最小的一条数据(可以是空值 NULL)。
last(val: float4) → float4获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: float8) → float8获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: INT2) → INT2获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: INT4) → INT4获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: INT8) → INT8获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: STRING) → STRING获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: timestamp) → timestamp获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: timestamptz) → timestamptz获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: varbytes) →varbytes获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(val: varchar) →varchar获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last(*)→any element获取条件范围内时间戳最大的一条数据(不包含空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row (val: varchar) →varchar获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: float4) → float4获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: float8) → float8获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: INT2) → INT2获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: INT4) → INT4获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: INT8) → INT8获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: STRING) → STRING获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: timestamp) → timestamp获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: timestamptz) → timestamptz获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(val: varbytes) →varbytes获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
last_row(*) →any element获取条件范围内时间戳最大的一条数据(可以是空值 NULL)。
支持在子查询、关联查询(JOIN)、嵌套查询(FROM 子查询)、WHERE、GROUP BY、HAVING、ORDER BY 等多种查询场景中使用,支持与 KWDB 现有的聚合函数联合使用。
当前限制
- 仅支持在 SELECT 列表中使用,不可作为普通列进行计算;
- 仅支持单列作为参数,传入数值常量、操作符、表达式或函数将触发语法错误;
- 仅限于时序表数据处理,不适用于临时表或关系型查询场景。
max(arg1: float4) → float4标识选定的最大值。
max(arg1: float8) → float8标识选定的最大值。
max(arg1: INT2) → INT2标识选定的最大值。
max(arg1: INT4) → INT4标识选定的最大值。
max(arg1: INT8) → INT8标识选定的最大值。
max(arg1: STRING) → STRING标识选定的最大值。
max(arg1: timestamp) → timestamp标识选定的最大值。
max(arg1: timestamptz) → timestamptz标识选定的最大值。
min(arg1: float4) → float4标识选定的最小值。
min(arg1: float8) → float8标识选定的最小值。
min(arg1: INT2) → INT2标识选定的最小值。
min(arg1: INT4) → INT4标识选定的最小值。
min(arg1: INT8) → INT8标识选定的最小值。
min(arg1: STRING) → STRING标识选定的最小值。
min(arg1: timestamp) → timestamp标识选定的最小值。
min(arg1: timestamptz) → timestamptz标识选定的最小值。
sum(arg1: float4) → float8计算选定值的总和。
sum(arg1: float8) → float8计算选定值的总和。
sum(arg1: INT2) → DECIMAL计算选定值的总和。
sum(arg1: INT4) → DECIMAL计算选定值的总和。
sum(arg1: INT8) → DECIMAL计算选定值的总和。
TWA(ts_primary_key, expr) → float8计算指定时间范围内数据点的加权平均值。与 time_bucket 函数结合使用时,在给定时间范围内的每个时间窗口内计算加权平均值。如未使用 time_bucket 函数,则在整个给定时间范围内计算加权平均值。
参数说明:
- ts_primary_key:时间戳列,必须是首列时间戳列,用于确定数据的存在范围。若存在多条时间戳相同的数据,系统会报错。有关详细信息,参见时序函数错误码
- expr:expr 表达式,其计算结果为数据点的数值,数据点之间的时间间隔则是数据点权重。适用于数值类型的数据,支持的类型包括单列(数值类型)、常量(数值)、操作符(+、-、*、/、%、<<、>>、|、&)、函数(返回值为数值类型)。

分组窗口函数

函数描述
COUNT_WINDOW (val1: int8)根据固定数据行数划分窗口。数据按时间戳排序后,划分为指定行数的窗口。如果总数据行数不能整除指定行数,最后一个窗口的行数会少于指定行数。具体操作说明,参见分组窗口查询
COUNT_WINDOW (val1: int8, val2: int8)根据固定数据行数和滑动偏移行数划分窗口。数据按时间戳排序后,按指定的行数和偏移量划分窗口。如果总数据行数不能整除指定行数,最后一个窗口的行数会少于指定行数。具体操作说明,参见分组窗口查询
EVENT_WINDOW (val1: expr, val2: expr)根据开始和结束条件划分窗口。数据满足开始条件时窗口开始,满足结束条件时窗口关闭。开始和结束条件可以是任意表达式,并可涉及不同的列。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: int2)按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: int4)按按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: int8)按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: bool)按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: char)按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
STATE_WINDOW (val: varchar)按设备状态划分窗口,相同状态的数据归于同一窗口,状态变化时窗口关闭。具体操作说明,参见分组窗口查询
SESSION_WINDOW (val1: timestamptz, val2: interval)根据时间戳列和最大连续时间间隔判断数据是否属于同一窗口。数据按时间戳排序,如果相邻数据的时间间隔超过最大允许间隔,则分属不同窗口。具体操作说明,参见分组窗口查询
SESSION_WINDOW (val1: timestamp, val2: interval)根据时间戳列和最大连续时间间隔判断数据是否属于同一窗口。数据按时间戳排序,如果相邻数据的时间间隔超过最大间隔,则分属不同窗口。具体操作说明,参见分组窗口查询
TIME_WINDOW (val1: timestamp, val2: interval)基于时间戳列和指定时间间隔划分窗口。数据按时间戳排序后,系统按指定时间间隔划分窗口。具体操作说明,参见分组窗口查询
TIME_WINDOW (val1: timestamptz, val2: interval)基于时间戳列和指定时间间隔划分窗口。数据按时间戳排序后,系统按指定时间间隔划分窗口。具体操作说明,参见分组窗口查询
TIME_WINDOW (val1: timestamp, val2: interval, val3: interval)基于时间戳列、指定时间间隔和滑动偏移划分窗口。数据按时间戳排序后,系统根据指定时间间隔和滑动偏移划分窗口。具体操作说明,参见分组窗口查询
TIME_WINDOW (val1: timestamptz, val2: interval, val3: interval)基于时间戳列、指定时间间隔和滑动偏移划分窗口。数据按时间戳排序后,系统根据指定时间间隔和滑动偏移划分窗口。具体操作说明,参见分组窗口查询

地理函数

函数 → 返回值描述
ST_Distance (a: geometry, b: geometry) → float8计算 a、b 两个⼏何对象之间的欧⽒距离。
ST_DWithin (a: geometry, b: geometry, d: float8) → bool检查 a、b 两个⼏何对象是否在给定距离(d)内。
ST_Contains (a: geometry, b: geometry) → bool检查⼏何对象 a 是否完全包含⼏何对象 b。
ST_Intersects (a: geometry, b: geometry) → bool检查 a、b 两个⼏何对象是否相交或重叠。
ST_Equals (a: geometry, b: geometry) → bool比较 a、b 两个⼏何对象是否完全相同。
ST_Touches (a: geometry, b: geometry) → bool检查 a、b 两个⼏何对象是否相邻。
ST_Covers (a: geometry, b: geometry) → bool检查⼏何对象 a 是否完全覆盖⼏何对象 b。
ST_Area (a:geometry) → float8计算⼀个多边形的面积