以下内容来自 TDengine 官方文档 及
GitHub 内容 。以下所有示例基于 TDengine 3.1.0.3
1.数学函数
2.字符串函数
3.转换函数
4.时间和日期函数
5.聚合函数
6.选择函数
7.时序数据库特有函数
8.系统函数
CSUM(expr)
功能说明:累加和(Cumulative sum),输出行与输入行数相同。
返回结果类型: 输入列如果是整数类型返回值为长整型 (int64_t),浮点数返回值为双精度浮点数(Double)。无符号整数类型返回值为无符号长整型(uint64_t)。
适用数据类型:数值类型。
嵌套子查询支持: 适用于内层查询和外层查询。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
> select csum(v1) from t7;
csum(v1) |
========================
1 |
3 |
6 |
10 |
15 |
21 |
28 |
36 |
45 |
55 |
65 |
> select ts,csum(v1) from t7;
ts | csum(v1) |
==================================================
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 3 |
2023-08-01 01:01:03.000 | 6 |
2023-08-01 01:01:04.000 | 10 |
2023-08-01 01:01:05.000 | 15 |
2023-08-01 01:01:06.000 | 21 |
2023-08-01 01:01:07.000 | 28 |
2023-08-01 01:01:08.000 | 36 |
2023-08-01 01:01:09.000 | 45 |
2023-08-01 01:01:10.000 | 55 |
2023-08-01 01:01:12.000 | 65 |
DERIVATIVE(expr, time_interval, ignore_negative)
ignore_negative: {
0
| 1
}
功能说明:统计表中某列数值的单位变化率。其中单位时间区间的长度可以通过 time_interval 参数指定,最小可以是 1 秒(1s);ignore_negative 参数的值可以是 0 或 1,为 1 时表示忽略负值。
返回数据类型:DOUBLE。
适用数据类型:数值类型。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
Query OK, 14 row(s) in set (0.001077s)
taos> select _rowts,derivative(v1,1s,0) from t7;
_rowts | derivative(v1,1s,0) |
======================================================
2023-08-01 01:01:02.000 | 1.000000000000000 |
2023-08-01 01:01:03.000 | 1.000000000000000 |
2023-08-01 01:01:04.000 | 1.000000000000000 |
2023-08-01 01:01:05.000 | 1.000000000000000 |
2023-08-01 01:01:06.000 | 1.000000000000000 |
2023-08-01 01:01:07.000 | 1.000000000000000 |
2023-08-01 01:01:08.000 | 1.000000000000000 |
2023-08-01 01:01:09.000 | 1.000000000000000 |
2023-08-01 01:01:10.000 | 1.000000000000000 |
2023-08-01 01:01:12.000 | 0.000000000000000 |
2023-08-01 01:01:13.000 | -12.000000000000000 |
Query OK, 11 row(s) in set (0.001550s)
taos> select _rowts,derivative(v1,1s,1) from t7;
_rowts | derivative(v1,1s,1) |
======================================================
2023-08-01 01:01:02.000 | 1.000000000000000 |
2023-08-01 01:01:03.000 | 1.000000000000000 |
2023-08-01 01:01:04.000 | 1.000000000000000 |
2023-08-01 01:01:05.000 | 1.000000000000000 |
2023-08-01 01:01:06.000 | 1.000000000000000 |
2023-08-01 01:01:07.000 | 1.000000000000000 |
2023-08-01 01:01:08.000 | 1.000000000000000 |
2023-08-01 01:01:09.000 | 1.000000000000000 |
2023-08-01 01:01:10.000 | 1.000000000000000 |
2023-08-01 01:01:12.000 | 0.000000000000000 |
DIFF(expr [, ignore_negative])
ignore_negative: {
0
| 1
}
功能说明:统计表中某列的值与前一行对应值的差。 ignore_negative 取值为 0|1 , 可以不填,默认值为 0. 不忽略负值。ignore_negative 为 1 时表示忽略负数。
返回数据类型:同应用字段。
适用数据类型:数值类型。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select _rowts,diff(v1) from t7;
_rowts | diff(v1) |
==================================================
1970-01-01 08:00:00.000 | NULL |
2023-08-01 01:01:02.000 | 1 |
2023-08-01 01:01:03.000 | 1 |
2023-08-01 01:01:04.000 | 1 |
2023-08-01 01:01:05.000 | 1 |
2023-08-01 01:01:06.000 | 1 |
2023-08-01 01:01:07.000 | 1 |
2023-08-01 01:01:08.000 | 1 |
2023-08-01 01:01:09.000 | 1 |
2023-08-01 01:01:10.000 | 1 |
1970-01-01 08:00:00.000 | NULL |
2023-08-01 01:01:12.000 | 0 |
2023-08-01 01:01:13.000 | -12 |
> select _rowts,diff(v1,0) from t7;
_rowts | diff(v1,0) |
==================================================
6426-05-31 11:01:03.576 | NULL |
2023-08-01 01:01:02.000 | 1 |
2023-08-01 01:01:03.000 | 1 |
2023-08-01 01:01:04.000 | 1 |
2023-08-01 01:01:05.000 | 1 |
2023-08-01 01:01:06.000 | 1 |
2023-08-01 01:01:07.000 | 1 |
2023-08-01 01:01:08.000 | 1 |
2023-08-01 01:01:09.000 | 1 |
2023-08-01 01:01:10.000 | 1 |
2023-08-01 01:01:10.000 | NULL |
2023-08-01 01:01:12.000 | 0 |
2023-08-01 01:01:13.000 | -12 |
> select _rowts,diff(v1,1) from t7;
_rowts | diff(v1,1) |
==================================================
1970-01-01 08:00:00.000 | NULL |
2023-08-01 01:01:02.000 | 1 |
2023-08-01 01:01:03.000 | 1 |
2023-08-01 01:01:04.000 | 1 |
2023-08-01 01:01:05.000 | 1 |
2023-08-01 01:01:06.000 | 1 |
2023-08-01 01:01:07.000 | 1 |
2023-08-01 01:01:08.000 | 1 |
2023-08-01 01:01:09.000 | 1 |
2023-08-01 01:01:10.000 | 1 |
1970-01-01 08:00:00.000 | NULL |
2023-08-01 01:01:12.000 | 0 |
2023-08-01 01:01:13.000 | NULL |
IRATE(expr)
功能说明:计算瞬时增长率。使用时间区间中最后两个样本数据来计算瞬时增长速率;如果这两个值呈递减关系,那么只取最后一个数用于计算,而不是使用二者差值。
返回数据类型:DOUBLE。
适用数据类型:数值类型。
适用于:表和超级表。
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select irate(v1) from t7 where ts>='2023-08-01 01:01:10.000' and ts<='2023-08-01 01:01:12.000';
irate(v1) |
============================
0.000000000000000 |
> select irate(v1) from t7 where ts>='2023-08-01 01:01:01.000' and ts<='2023-08-01 01:01:04.000';
irate(v1) |
============================
1.000000000000000 |
> select _wstart,irate(v1) from t7 interval(2s);
_wstart | irate(v1) |
======================================================
2023-08-01 01:01:00.000 | 0.000000000000000 |
2023-08-01 01:01:02.000 | 1.000000000000000 |
2023-08-01 01:01:04.000 | 1.000000000000000 |
2023-08-01 01:01:06.000 | 1.000000000000000 |
2023-08-01 01:01:08.000 | 1.000000000000000 |
2023-08-01 01:01:10.000 | 0.000000000000000 |
2023-08-01 01:01:12.000 | -2.000000000000000 |
MAVG(expr, k)
功能说明: 计算连续 k 个值的移动平均数(moving average)。如果输入行数小于 k,则无结果输出。参数 k 的合法输入范围是 1≤ k ≤ 1000。
返回结果类型: DOUBLE。
适用数据类型: 数值类型。
嵌套子查询支持: 适用于内层查询和外层查询。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select ts,mavg(v1,2) from t7;
ts | mavg(v1,2) |
======================================================
2023-08-01 01:01:02.000 | 1.500000000000000 |
2023-08-01 01:01:03.000 | 2.500000000000000 |
2023-08-01 01:01:04.000 | 3.500000000000000 |
2023-08-01 01:01:05.000 | 4.500000000000000 |
2023-08-01 01:01:06.000 | 5.500000000000000 |
2023-08-01 01:01:07.000 | 6.500000000000000 |
2023-08-01 01:01:08.000 | 7.500000000000000 |
2023-08-01 01:01:09.000 | 8.500000000000000 |
2023-08-01 01:01:10.000 | 9.500000000000000 |
2023-08-01 01:01:12.000 | 10.000000000000000 |
2023-08-01 01:01:13.000 | 4.000000000000000 |
> select ts,mavg(v1,4) from t7;
ts | mavg(v1,4) |
======================================================
2023-08-01 01:01:04.000 | 2.500000000000000 |
2023-08-01 01:01:05.000 | 3.500000000000000 |
2023-08-01 01:01:06.000 | 4.500000000000000 |
2023-08-01 01:01:07.000 | 5.500000000000000 |
2023-08-01 01:01:08.000 | 6.500000000000000 |
2023-08-01 01:01:09.000 | 7.500000000000000 |
2023-08-01 01:01:10.000 | 8.500000000000000 |
2023-08-01 01:01:12.000 | 9.250000000000000 |
2023-08-01 01:01:13.000 | 6.750000000000000 |
STATECOUNT(expr, oper, val)
功能说明:返回满足某个条件的连续记录的个数,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加 1,条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。
参数范围:
返回结果类型:INTEGER。
适用数据类型:数值类型。
嵌套子查询支持:不支持应用在子查询上。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select ts,statecount(v1,'GT',5) from t7;
ts | statecount(v1,'GT',5) |
==================================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | -1 |
2023-08-01 01:01:02.000 | -1 |
2023-08-01 01:01:03.000 | -1 |
2023-08-01 01:01:04.000 | -1 |
2023-08-01 01:01:05.000 | -1 |
2023-08-01 01:01:06.000 | 1 |
2023-08-01 01:01:07.000 | 2 |
2023-08-01 01:01:08.000 | 3 |
2023-08-01 01:01:09.000 | 4 |
2023-08-01 01:01:10.000 | 5 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 6 |
2023-08-01 01:01:13.000 | -1 |
> select ts,statecount(v1,'GT',1) from t7;
ts | statecount(v1,'GT',1) |
==================================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | -1 |
2023-08-01 01:01:02.000 | 1 |
2023-08-01 01:01:03.000 | 2 |
2023-08-01 01:01:04.000 | 3 |
2023-08-01 01:01:05.000 | 4 |
2023-08-01 01:01:06.000 | 5 |
2023-08-01 01:01:07.000 | 6 |
2023-08-01 01:01:08.000 | 7 |
2023-08-01 01:01:09.000 | 8 |
2023-08-01 01:01:10.000 | 9 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -1 |
STATEDURATION(expr, oper, val, unit)
功能说明:返回满足某个条件的连续记录的时间长度,结果作为新的一列追加在每行后面。条件根据参数计算,如果条件为 true 则加上两个记录之间的时间长度(第一个满足条件的记录时间长度记为 0),条件为 false 则重置为-1,如果数据为 NULL,跳过该条数据。
参数范围:
'LT'
(小于)、'GT'
(大于)、'LE'
(小于等于)、'GE'
(大于等于)、'NE'
(不等于)、'EQ'
(等于),不区分大小写,但需要用''
包括。返回结果类型:INTEGER。
适用数据类型:数值类型。
嵌套子查询支持:不支持应用在子查询上。
适用于:表和超级表。
使用说明:
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select ts,stateduration(v1,'GT',5,1a) from t7;
ts | stateduration(v1,'GT',5,1a) |
========================================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | -1 |
2023-08-01 01:01:02.000 | -1 |
2023-08-01 01:01:03.000 | -1 |
2023-08-01 01:01:04.000 | -1 |
2023-08-01 01:01:05.000 | -1 |
2023-08-01 01:01:06.000 | 0 |
2023-08-01 01:01:07.000 | 1000 |
2023-08-01 01:01:08.000 | 2000 |
2023-08-01 01:01:09.000 | 3000 |
2023-08-01 01:01:10.000 | 4000 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 6000 |
2023-08-01 01:01:13.000 | -1 |
> select ts,stateduration(v1,'GT',5,1s) from t7;
ts | stateduration(v1,'GT',5,1s) |
========================================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | -1 |
2023-08-01 01:01:02.000 | -1 |
2023-08-01 01:01:03.000 | -1 |
2023-08-01 01:01:04.000 | -1 |
2023-08-01 01:01:05.000 | -1 |
2023-08-01 01:01:06.000 | 0 |
2023-08-01 01:01:07.000 | 1 |
2023-08-01 01:01:08.000 | 2 |
2023-08-01 01:01:09.000 | 3 |
2023-08-01 01:01:10.000 | 4 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 6 |
2023-08-01 01:01:13.000 | -1 |
> select ts,stateduration(v1,'GT',5,1m) from t7;
ts | stateduration(v1,'GT',5,1m) |
========================================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | -1 |
2023-08-01 01:01:02.000 | -1 |
2023-08-01 01:01:03.000 | -1 |
2023-08-01 01:01:04.000 | -1 |
2023-08-01 01:01:05.000 | -1 |
2023-08-01 01:01:06.000 | 0 |
2023-08-01 01:01:07.000 | 0 |
2023-08-01 01:01:08.000 | 0 |
2023-08-01 01:01:09.000 | 0 |
2023-08-01 01:01:10.000 | 0 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 0 |
2023-08-01 01:01:13.000 | -1 |
TWA(expr)
功能说明:时间加权平均函数。统计表中某列在一段时间内的时间加权平均。
返回数据类型:DOUBLE。
适用数据类型:数值类型。
适用于:表和超级表。
示例:
> select ts,v1 from t7;
ts | v1 |
========================================
2023-08-01 01:01:00.000 | NULL |
2023-08-01 01:01:01.000 | 1 |
2023-08-01 01:01:02.000 | 2 |
2023-08-01 01:01:03.000 | 3 |
2023-08-01 01:01:04.000 | 4 |
2023-08-01 01:01:05.000 | 5 |
2023-08-01 01:01:06.000 | 6 |
2023-08-01 01:01:07.000 | 7 |
2023-08-01 01:01:08.000 | 8 |
2023-08-01 01:01:09.000 | 9 |
2023-08-01 01:01:10.000 | 10 |
2023-08-01 01:01:11.000 | NULL |
2023-08-01 01:01:12.000 | 10 |
2023-08-01 01:01:13.000 | -2 |
> select _wstart,twa(v1) from t7 interval(1s);
_wstart | twa(v1) |
======================================================
2023-08-01 01:01:00.000 | 0.000000000000000 |
2023-08-01 01:01:01.000 | 1.499500000000000 |
2023-08-01 01:01:02.000 | 2.499500000000000 |
2023-08-01 01:01:03.000 | 3.499500000000000 |
2023-08-01 01:01:04.000 | 4.499499999999999 |
2023-08-01 01:01:05.000 | 5.499499999999999 |
2023-08-01 01:01:06.000 | 6.499499999999999 |
2023-08-01 01:01:07.000 | 7.499499999999999 |
2023-08-01 01:01:08.000 | 8.499500000000001 |
2023-08-01 01:01:09.000 | 9.499500000000001 |
2023-08-01 01:01:10.000 | 5.005000000000000 |
2023-08-01 01:01:11.000 | 0.000000000000000 |
2023-08-01 01:01:12.000 | 4.006000976562500 |
2023-08-01 01:01:13.000 | -2.000000000000000 |
> select _wstart,twa(v1) from t7 interval(2s);
_wstart | twa(v1) |
======================================================
2023-08-01 01:01:00.000 | 1.499500000000000 |
2023-08-01 01:01:02.000 | 2.999500000000000 |
2023-08-01 01:01:04.000 | 4.999499999999999 |
2023-08-01 01:01:06.000 | 6.999499999999999 |
2023-08-01 01:01:08.000 | 8.999500000000001 |
2023-08-01 01:01:10.000 | 9.995000000000001 |
2023-08-01 01:01:12.000 | 3.999999511718750 |