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

相关推荐
梦里不知身是客1112 分钟前
flume的数据模型介绍
大数据·flume
rockmelodies12 分钟前
亿赛通脚本远程调试配置技巧
java·亿赛通·debug调试
❥ღ Komo·20 分钟前
K8s蓝绿发布实战:零停机部署秘籍
java·开发语言
不穿格子的程序员25 分钟前
Redis篇3——Redis深度剖析:内存数据的“不死之身”——RDB、AOF与混合持久化
数据库·redis·缓存·数据持久化·aof·rdb
小安同学iter25 分钟前
天机学堂-排行榜功能-day08(六)
java·redis·微服务·zset·排行榜·unlink·天机学堂
秋深枫叶红27 分钟前
嵌入式第三十四篇——linux系统编程——进程
linux·服务器·数据库·学习
hgz071028 分钟前
Spring Boot Starter机制
java·spring boot·后端
daxiang1209220529 分钟前
Spring boot服务启动报错 java.lang.StackOverflowError 原因分析
java·spring boot·后端
我家领养了个白胖胖29 分钟前
极简集成大模型!Spring AI Alibaba ChatClient 快速上手指南
java·后端·ai编程
jiayong2330 分钟前
Markdown编辑完全指南
java·编辑器