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

相关推荐
indexsunny2 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Redis缓存场景解析
java·spring boot·redis·缓存·微服务·消息队列·电商
DBA小马哥2 小时前
时序数据库迁移替换与时序数据库分片
数据库·时序数据库
DBA小马哥2 小时前
时序数据库迁移方案在物联网设备监测中的实践与性能突破
数据库·物联网·时序数据库
ID_180079054732 小时前
小红书笔记详情API接口基础解析:数据结构与调用方式
数据结构·数据库·笔记
无心水2 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
28岁青春痘老男孩7 小时前
JDK8+SpringBoot2.x 升级 JDK 17 + Spring Boot 3.x
java·spring boot
方璧7 小时前
限流的算法
java·开发语言
九河云7 小时前
海上风电“AI偏航对风”:把发电量提升2.1%,单台年增30万度
大数据·人工智能·数字化转型
元Y亨H7 小时前
Nacos - 服务注册
java·微服务
曲莫终7 小时前
Java VarHandle全面详解:从入门到精通
java·开发语言