TDengine 函数完整参考 — 聚合、时序、字符串、时间、数学

发布时间:2026/7/16 18:32:06
TDengine 函数完整参考 — 聚合、时序、字符串、时间、数学 分类10.SQL 参考 |篇章03 函数完整参考适用版本TDengine v3.xv3.3.x / v3.4.x | 最后更新2026-07-16TDengine 提供 100 内置函数覆盖聚合、时序专用、字符串处理、时间运算、数学计算、类型转换。本文按类别速查并给出典型用法。函数速查表类别代表函数聚合COUNT, SUM, AVG, MIN, MAX, FIRST, LAST, MODE统计STDDEV, VAR_POP, PERCENTILE, APERCENTILE, HISTOGRAM时序DIFF, DERIVATIVE, MAVG, TWA, INTERP, IRATE, STATECOUNT选择TOP, BOTTOM, SAMPLE, TAIL, UNIQUE窗口元数据_WSTART, _WEND, _WDURATION, _QSTART, _QEND字符串CONCAT, SUBSTR, LENGTH, UPPER, LOWER, TRIM时间NOW, TODAY, TIMEDIFF, TIMETRUNCATE, TO_CHAR, TO_TIMESTAMP数学ABS, ROUND, FLOOR, CEIL, POW, LOG, SIN, COS类型CAST, TO_JSON位运算 | ^ ~ 详细解析1. 聚合函数-- 计数COUNT(*)-- 行数COUNT(col)-- 非空行数COUNT(DISTINCTcol)-- 去重计数-- 求和与均值SUM(col)AVG(col)-- 极值MIN(col)MAX(col)-- 时序首尾FIRST(col)-- 时间最早LAST(col)-- 时间最晚LAST_ROW(col)-- 最新整行2. 统计函数-- 标准差/方差STDDEV(col)VAR_POP(col)-- 百分位PERCENTILE(col,50)-- 精确慢APERCENTILE(col,50)-- 近似快推荐APERCENTILE(col,99,t-digest)-- 指定算法-- 直方图HISTOGRAM(col,linear_bin,{start:0,width:10,count:10},0)-- 协方差HYPERLOGLOG(col)-- 近似去重计数HLL3. 时序专用函数-- DIFF: 相邻值差SELECTts,current,DIFF(current)FROMd001;-- tsT2 时 DIFF current(T2) - current(T1)-- DERIVATIVE: 导数SELECTts,DERIVATIVE(current,1s,0)FROMd001;-- (current_change) / time_change每秒变化率-- MAVG: 移动平均SELECTts,MAVG(current,5)FROMd001;-- 5 个数据点的滑动平均-- TWA: 时间加权平均SELECTTWA(current)FROMd001WHEREtsnow-1h;-- 适合采样间隔不均的数据-- INTERP: 插值SELECTINTERP(current)FROMd001WHEREtsBETWEEN2026-06-04 12:00AND2026-06-04 13:00EVERY(1m)FILL(LINEAR);-- 按指定时间生成插值结果-- IRATE: 瞬时变化率基于最后两个数据点SELECTIRATE(counter)FROMd001;-- STATECOUNT: 满足状态的连续点数SELECTSTATECOUNT(current,gt,100)FROMd001;-- STATEDURATION: 满足状态的持续时长SELECTSTATEDURATION(current,gt,100,1s)FROMd001;4. 选择函数-- TOP/BOTTOMSELECTTOP(current,10)FROMmeters;SELECTBOTTOM(current,5)FROMmeters;-- 采样SELECTSAMPLE(current,100)FROMmeters;-- 尾部SELECTTAIL(current,10)FROMmeters;-- 唯一值SELECTUNIQUE(location)FROMmeters;5. 时间函数-- 当前时间NOW-- 当前时间戳NOW()1h TODAY()-- 今天 00:00-- 时间格式化TO_CHAR(ts,yyyy-mm-dd HH:MI:SS)-- 字符串转时间TO_TIMESTAMP(2026-06-04 12:00:00,yyyy-mm-dd HH:MI:SS)-- 时间差TIMEDIFF(ts1,ts2,1m)-- 单位1s/1m/1h/1d-- 时间截断TIMETRUNCATE(ts,1h)-- 截断到小时-- 时区TIMEZONE()-- 当前时间戳CURRENT_TIMESTAMP-- 时间加减ts1h,ts-30m6. 字符串函数CONCAT(Hello, ,World)CONCAT_WS(-,a,b,c)SUBSTR(str,1,5)LENGTH(str)-- 字符串字节长CHAR_LENGTH(str)-- 字符数UPPER(str)LOWER(str)TRIM(str)LTRIM(str),RTRIM(str)REPLACE(str,old,new)LOCATE(sub,str)-- 子串位置7. 数学函数ABS(x)ROUND(x,n)-- 四舍五入FLOOR(x),CEIL(x)POW(x,y),POWER(x,y)LOG(x),LOG10(x)SQRT(x)SIN(x),COS(x),TAN(x)ASIN(x),ACOS(x),ATAN(x)PI()RAND()MOD(x,y)8. 类型转换与条件-- 类型转换CAST(colASINT)CAST(colASVARCHAR(20))CAST(tsASBIGINT)-- 时间戳转毫秒-- 条件函数CASEWHENcondTHENv1ELSEv2ENDCOALESCE(c1,c2,c3)-- 第一个非 NULLNULLIF(c1,c2)-- 相等返回 NULL-- JSONTO_JSON({a:1})-- 文本转 JSONcol-$.field-- JSON 字段提取视版本9. 窗口元数据函数SELECT_wstart,-- 窗口开始_wend,-- 窗口结束_wduration,-- 窗口时长毫秒_qstart,-- 查询开始_qend,-- 查询结束AVG(current)FROMmetersWHEREtsnow-1dINTERVAL(1h);代码示例综合时序分析-- 设备性能分析SELECTtbname,_wstart,AVG(current)ASavg_c,STDDEV(current)ASstd_c,APERCENTILE(current,95)ASp95,MAX(current)-MIN(current)ASrange_c,STATECOUNT(current,gt,100)ASover_count,DERIVATIVE(SUM(current),1h,0)AShourly_growthFROMmetersWHEREtsnow-1dPARTITIONBYtbnameINTERVAL(1h);数据补全与插值-- 5 分钟均匀插值SELECTINTERP(current)AScurrentFROMd001WHEREtsBETWEEN2026-06-04AND2026-06-05EVERY(5m)FILL(LINEAR);字符串与时间处理-- 按天分组统计SELECTTO_CHAR(ts,yyyy-mm-dd)ASday,AVG(current)FROMmetersWHEREtsnow-30dGROUPBYday;-- 转大写匹配SELECT*FROMmetersWHEREUPPER(location)BEIJING;性能考量函数性能等级函数性能备注COUNT/SUM/AVG/MIN/MAX极快用块 SMAFIRST/LAST极快用 LAST 缓存APERCENTILE快近似算法PERCENTILE慢精确扫全部DIFF/DERIVATIVE中行间计算MAVG中窗口聚合TWA中复杂时间加权INTERP中插值计算选择建议需求推荐计数COUNT去重计数COUNT(DISTINCT)小数据/ HYPERLOGLOG大数据百分位APERCENTILE一般/ PERCENTILE必须精确移动均值MAVG不均匀采样均值TWA等距插值INTERPFAQQ1: 自定义函数 (UDF) 怎么用支持 C/C UDF。需编译为 soCREATE FUNCTION 注册CREATEAGGREGATEFUNCTIONfn_nameAS/path/to/lib.soOUTPUTTYPEDOUBLE;Q2: COUNT(*) 和 COUNT(col) 区别COUNT(*): 所有行COUNT(col): col 非 NULL 的行性能COUNT(*) 用块 SMA 最快Q3: PERCENTILE 卡死精确计算需排序所有数据。大数据用 APERCENTILE。Q4: DIFF 第一行是什么NULL无前一行可比。Q5: 函数嵌套支持吗支持但有限。聚合函数不能嵌套聚合函数除非通过子查询。参考系统构架篇01-《TDengine 整体架构全景》02-《集群拓扑深度解析》03-《MNode 内部机制深度解析》04-《RPC 通信层深度解析》05-《VNode 生命周期》06-《RAFT 共识协议》07-《端到端的消息流》数据模型01-《数据库创建与参数详解》02-《超级表/子表/普通表》03-《支持数据类型深度解析》04-《TDengine Tag 设计哲学与 Schema 变更机制》05-《TDengine 虚拟表实现原理》存储引擎01-《TDengine 存储引擎概览》02-《TDengine MemTable 深度解析》03-《TDengine WAL 预写日志机制》04-《TDengine 数据文件格式》05-《TDengine Commit 与 Flush 机制 》06-《TDengine Compaction 合并策略 》07-《TDengine 数据保留与 TTL》08-《TDengine 压缩编码机制》09-《TDengine Cache 与 Last 查询加速》10-《TDengine 逻辑计划生成》查询引擎01-《TDengine 查询引擎概览》02-《TDengine SQL 解析与词法分析》03-《TDengine 语义分析与 AST 重写》04-《TDengine 逻辑计划生成》05-《TDengine 物理计划生成》06-《TDengine 扫描算子》07-《TDengine 聚合算子》08-《TDengine 聚合算子》09-《TDengine 连接算子》10-《TDengine 排序、填充与投影》11-《TDengine 分布式查询执行》12-《TDengine EXPLAIN 与查询优化》数据写入01-《TDengine SQL INSERT》02-《TDengine 无模式写入》03-《TDengine STMT 写入》04-《TDengine 写入内部流程》05-《TDengine 数据更新删除》数据订阅01-《TDengine 数据订阅》02-《TDengine 订阅 vs Kafka》03-《TDengine TMQ 消费流程》04-《TDengine 内部机制》05-《TDengine TMQ 最佳实践》预聚合01-《TDengine RSMA》02-《TDengine TSMA — 时间维度的物化聚合视图》03-《TDengine SMA 内部实现》索引01-《TDengine Tag 索引》02-《TDengine SMA 索引》SQL 语句01-《TDengine DDL》02-《TDengine DML SELECT》关于 TDengineTDengine 专为物联网IoT平台、工业大数据平台设计。其中TDengine TSDB 是一款高性能、分布式的时序数据库Time Series Database同时它还带有内建的缓存、流式计算、数据订阅等系统功能TDengine IDMP 是一款AI原生工业数据管理平台它通过树状层次结构建立数据目录对数据进行标准化、情景化并通过 AI 提供实时分析、可视化、事件管理与报警等功能。