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

相关推荐
程序员西西4 分钟前
SpringCloudGateway入门实战
java·spring boot·计算机·程序员·编程
c***93771 小时前
SpringBoot实现异步调用的方法
java·spring boot·spring
科研面壁者1 小时前
SPSS——独立样本T检验
数据库·人工智能·机器学习·信息可视化·数据分析·spss·数据处理
云栈开源日记1 小时前
Python 开发技术栈梳理:从数据库、爬虫到 Django 与机器学习
数据库·爬虫·python·学习·机器学习·django
青衫码上行1 小时前
【Java Web学习 | 第15篇】jQuery(万字长文警告)
java·开发语言·前端·学习·jquery
bigdata-rookie1 小时前
Spark SQL 简介
大数据·sql·spark
凯子坚持 c2 小时前
Docker 容器实战:从镜像管理到私有仓库构建深度解析
java·docker·eureka
倔强的石头1062 小时前
openGauss数据库:从CentOS 7.9部署到实战验证
linux·数据库·centos
q***01653 小时前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
4***14904 小时前
MySQL调试技巧与工具
数据库·mysql