TDengine 数学函数 CEIL 用户手册

CEIL

sql 复制代码
CEIL(expr)

功能说明

返回指定字段的向上取整(最小不小于该值的整数)。

返回结果类型

与输入字段的原始数据类型一致(整数类型返回整数,浮点类型返回浮点)。

适用数据类型

数值类型(TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE 及其无符号类型)。

嵌套子查询支持

适用于内层查询和外层查询。

适用于

表和超级表。

使用说明

  • 若 expr 为 NULL,返回 NULL。
  • 只能与普通列、选择(Selection)、投影(Projection)函数一起使用,不能与聚合(Aggregation)函数一起使用。
  • 不支持字符串、布尔、时间戳等非数值类型。
  • 支持嵌套使用,如 CEIL(CEIL(c1))。
  • 不支持与聚合函数(如 COUNT、AVG)混用。
  • 对于整数类型,结果等于原值;对于浮点类型,结果为向上取整后的浮点数。

错误处理

  • 参数个数错误、类型错误、无效表名等会报错。
  • 对不支持的数据类型(如 timestamp、bool、binary、nchar)会报错。

示例

基础示例
sql 复制代码
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   |
表字段示例

假设有如下表结构:

sql 复制代码
CREATE TABLE t1 (
  ts TIMESTAMP,
  c1 INT,
  c2 BIGINT,
  c3 SMALLINT,
  c4 TINYINT,
  c5 FLOAT,
  c6 DOUBLE
);

插入部分数据:

sql 复制代码
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);

查询:

sql 复制代码
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     |
嵌套与表达式
sql 复制代码
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 |
边界值测试

支持大整数和极值:

sql 复制代码
taos> SELECT CEIL(2147483647), CEIL(-2147483648);
 ceil(2147483647) | ceil(-2147483648) |
========================================
       2147483647 |      -2147483648  |
错误示例
sql 复制代码
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
sql 复制代码
taos> SELECT CEIL(c1) FROM empty_table;
-- 返回空结果集

taos> SELECT CEIL(NULL);
-- 返回 NULL
与其他函数组合
sql 复制代码
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    |

实际生产中的意义

  1. 数据标准化与分组

    在智能电表、物联网等场景,CEIL 可用于将连续型数据(如电流、电压、温度等)标准化为离散区间。例如,将电流按 1A 为单位分组统计,便于分析各区间的设备数量或异常分布。

  2. 账单与计费场景

    电力、用水、用气等行业常用 CEIL 进行计费。例如,实际用量不足一个计费单位时,向上取整保证最小计费单位,避免因小数点导致的漏算或计费不准确。

  3. 容量规划与资源分配

    在云计算、存储、网络等场景,CEIL 用于资源分配。例如,用户申请 2.3GB 存储,系统实际分配 3GB,保证资源充足且不浪费。

  4. 统计分析与报表

    在数据分析报表中,CEIL 可用于将统计结果向上取整,便于展示和理解。例如,统计平均值、最大值等时,向上取整避免小数点带来的误差。

  5. 异常检测与阈值判断

    在设备监控、异常检测场景,CEIL 可用于将测量值与阈值对齐,便于快速判断是否超标或触发告警。

  6. 时间窗口与周期分析

    在时序数据分析中,CEIL 可用于将时间戳归并到最近的整点或周期边界,便于按小时、天、周等周期聚合分析。

性能说明

  • CEIL 是标量函数,对每行独立计算,性能高。
  • 建议在 WHERE 子句中先过滤无效数据。

相关函数

  • FLOOR:向下取整
  • ROUND:四舍五入
  • ABS:绝对值

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

相关推荐
Easy_API14 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo14 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
学长毕设15 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
voipmaker15 小时前
GB28181 对接踩坑实录:注册不上、目录不全、流卡顿,一次说清(附 2022 版变更清单)
物联网·音视频·实时音视频·信息与通信·iot·gb28181·国标gb28181
微订校园外卖平台16 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
zzu123zsw16 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
小徐不徐说17 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
Chery114017 小时前
高速ADC与精密DAC怎么选?DP9230D与DP8532D应用解析
嵌入式硬件·物联网·射频工程
源码集结号17 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场17 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算