TDengine 数学函数 CEIL 用户手册
CEIL
CEIL(expr)
功能说明
返回指定字段的向上取整(最小不小于该值的整数)。
返回结果类型
与输入字段的原始数据类型一致(整数类型返回整数,浮点类型返回浮点)。
适用数据类型
数值类型(TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 及其无符号类型)。
嵌套子查询支持
适用于内层查询和外层查询。
适用于
表和超级表。
使用说明
- 若
expr
为 NULL,返回 NULL。 - 只能与普通列、选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
- 不支持字符串、布尔、时间戳等非数值类型。
- 支持嵌套使用,如
CEIL(CEIL(c1))
。 - 不支持与聚合函数(如 COUNT、AVG)混用。
- 对于整数类型,结果等于原值;对于浮点类型,结果为向上取整后的浮点数。
错误处理
- 参数个数错误、类型错误、无效表名等会报错。
- 对不支持的数据类型(如 timestamp、bool、binary、nchar)会报错。
示例
基础示例
taos> SELECT CEIL(1.1);ceil(1.1) |
=============2 |taos> SELECT CEIL(-1.1);ceil(-1.1) |
=============-1 |taos> SELECT CEIL(5);ceil(5) |
==========5 |taos> SELECT CEIL(NULL);ceil(null) |
=============NULL |
表字段示例
假设有如下表结构:
CREATE TABLE t1 (ts TIMESTAMP,c1 INT,c2 BIGINT,c3 SMALLINT,c4 TINYINT,c5 FLOAT,c6 DOUBLE
);
插入部分数据:
INSERT INTO t1 VALUES ('2020-10-21 01:01:01.000', 1, 11111, 111, 11, 1.11, 11.11);
INSERT INTO t1 VALUES ('2021-05-07 01:01:10.000', 4, 44444, 444, 44, -0.444, 44.44);
INSERT INTO t1 VALUES ('2022-12-01 01:01:30.000', 8, -88888, -888, -88, -8.88, -88.88);
查询:
taos> SELECT c1, c5, CEIL(c1), CEIL(c5) FROM t1;c1 | c5 | ceil(c1) | ceil(c5) |
=====================================1 | 1.11 | 1 | 2 |4 | -0.444 | 4 | 0 |8 | -8.88 | 8 | -8 |
嵌套与表达式
taos> SELECT CEIL(CEIL(1.1));ceil(ceil(1.1)) |
==================2 |taos> SELECT CEIL(c5 + 0.5) FROM t1;ceil(c5 + 0.5) |
=================2 |1 |-8 |
边界值测试
支持大整数和极值:
taos> SELECT CEIL(2147483647), CEIL(-2147483648);ceil(2147483647) | ceil(-2147483648) |
========================================2147483647 | -2147483648 |
错误示例
taos> SELECT CEIL(ts) FROM t1;
-- 报错:不支持 timestamp 类型taos> SELECT CEIL(c7) FROM t1;
-- 报错:不支持 bool 类型taos> SELECT CEIL(c8) FROM t1;
-- 报错:不支持 binary 类型taos> SELECT CEIL(c9) FROM t1;
-- 报错:不支持 nchar 类型taos> SELECT CEIL(c1, c2) FROM t1;
-- 报错:参数个数错误
空表与 NULL
taos> SELECT CEIL(c1) FROM empty_table;
-- 返回空结果集taos> SELECT CEIL(NULL);
-- 返回 NULL
与其他函数组合
taos> SELECT c1, CEIL(c1), c5, FLOOR(c5) FROM t1;c1 | ceil(c1) | c5 | floor(c5) |
====================================1 | 1 | 1.11 | 1 |4 | 4 | -0.444 | -1 |
实际生产中的意义
-
数据标准化与分组
在智能电表、物联网等场景,CEIL 可用于将连续型数据(如电流、电压、温度等)标准化为离散区间。例如,将电流按 1A 为单位分组统计,便于分析各区间的设备数量或异常分布。 -
账单与计费场景
电力、用水、用气等行业常用 CEIL 进行计费。例如,实际用量不足一个计费单位时,向上取整保证最小计费单位,避免因小数点导致的漏算或计费不准确。 -
容量规划与资源分配
在云计算、存储、网络等场景,CEIL 用于资源分配。例如,用户申请 2.3GB 存储,系统实际分配 3GB,保证资源充足且不浪费。 -
统计分析与报表
在数据分析报表中,CEIL 可用于将统计结果向上取整,便于展示和理解。例如,统计平均值、最大值等时,向上取整避免小数点带来的误差。 -
异常检测与阈值判断
在设备监控、异常检测场景,CEIL 可用于将测量值与阈值对齐,便于快速判断是否超标或触发告警。 -
时间窗口与周期分析
在时序数据分析中,CEIL 可用于将时间戳归并到最近的整点或周期边界,便于按小时、天、周等周期聚合分析。
性能说明
- CEIL 是标量函数,对每行独立计算,性能高。
- 建议在 WHERE 子句中先过滤无效数据。
相关函数
- FLOOR:向下取整
- ROUND:四舍五入
- ABS:绝对值
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。