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 提供实时分析、可视化、事件管理与报警等功能。

相关推荐
敲代码的嘎仔2 分钟前
数据结构算法学习day3——二分查找
java·开发语言·数据结构·学习·程序人生·算法·职场和发展
代码不停10 分钟前
JavaEE多线程进阶
java·数据结构·java-ee
SimonKing10 分钟前
聊聊Spring里那个不打扰Controller就能统一改响应的“神器”
java·后端·程序员
hexionly16 分钟前
数据仓库·简介(一)
大数据·数据仓库
TDengine (老段)18 分钟前
TDengine 数学函数 TRUNCATE 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
鹓于22 分钟前
Excel图片批量插入与文件瘦身
java·服务器·数据库
TDengine (老段)23 分钟前
TDengine 数据函数 CORR 用户手册
大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
鬼火儿24 分钟前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
凛_Lin~~36 分钟前
安卓接入Twitter三方登录
android·java·twitter
ᐇ95937 分钟前
Java核心概念深度解析:从包装类到泛型的全面指南
java·开发语言