当前位置: 首页 > news >正文

TDengine 选择函数 TOP() 用户手册

在这里插入图片描述

TOP 函数用户手册

函数定义

TOP(expr, k)

功能说明

TOP() 函数返回指定列中最大的 k 个非 NULL 值及其对应的记录。如果多条数据取值相同,且全部取用会超出 k 条限制时,系统会从相同值中随机选取符合要求的数量返回。

版本要求

  • 最低版本: v3.0.0.0

返回值

  • 数据类型: 与输入参数相同的数据类型
  • 返回内容: 最大的 k 个值及其对应的完整记录

参数说明

参数类型说明取值范围
expr表达式要统计的字段表达式数值类型
k整数返回的记录数量[1, 100]

适用数据类型

TOP 函数支持以下数据类型:

  • 数值类型: TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、UTINYINT、USMALLINT、UINT、UBIGINT

适用范围

  • 表类型: 表和超级表
  • 查询支持: 支持聚合查询、多行返回
  • 函数特性: 聚合函数、选择函数、多行函数、保持顺序、忽略 NULL 值

基本用法示例

单列查询

-- 返回电流最大的 5 个值
SELECT TOP(current, 5) FROM meters;-- 返回电压最大的 3 个值
SELECT TOP(voltage, 3) FROM meters;-- 返回相位最大的 10 个值
SELECT TOP(phase, 10) FROM meters;

带时间戳查询

-- 返回电流最大的 5 个值及其时间戳
SELECT ts,TOP(current, 5) as top_current_values
FROM meters;

带标签查询

-- 返回包含标签信息的 TOP 查询
SELECT location,TOP(current, 5) as top_current_values,ts
FROM meters;

智能电表场景应用示例

基于智能电表数据库结构:

-- 数据库和表结构
USE test;
-- meters 超级表包含 ts, current, voltage, phase 字段和 location, groupid 标签

场景1:负载峰值分析

-- 查找全网电流最高的 10 个记录
SELECT TOP(current, 10), ts FROM meters;-- 查找电压最高的 5 个记录
SELECT TOP(voltage, 5), ts FROM meters;

场景2:按区域分组的峰值分析

-- 查找每个区域电流最高的 5 个值
SELECT location,TOP(current, 5),ts
FROM meters 
GROUP BY location;-- 查找每个区域电压最高的 3 个值
SELECT location,TOP(voltage, 3),ts
FROM meters 
GROUP BY location;

场景3:设备负载排名

-- 查找各电表电流最高的 3 个记录
SELECT tbname,location,TOP(current, 3),ts
FROM meters 
GROUP BY tbname, location;

场景4:异常高值检测

-- 检测电流异常高值(前 20 个最高值)
SELECT tbname,location,TOP(current, 20),ts
FROM meters 
GROUP BY tbname, location;

场景5:电网负荷热点分析

-- 分析各区域的负荷热点(前 10 个峰值)
SELECT location,TOP(current, 10),ts
FROM meters 
GROUP BY location;

场景6:设备容量评估

-- 评估设备的负载容量使用情况(前 5 个峰值)
SELECT tbname,location,TOP(current, 5),ts
FROM meters 
GROUP BY tbname, location;

场景7:时间段内的峰值分析

-- 分析最近一天内的负载峰值
SELECT location,TOP(current, 15),ts
FROM meters 
WHERE ts >= NOW() - 1d
GROUP BY location;-- 分析最近一周的峰值趋势
SELECT location,TOP(current, 25),ts
FROM meters 
WHERE ts >= NOW() - 7d
GROUP BY location;

场景8:电力质量监控

-- 监控电压质量(查找最高电压值)
SELECT tbname,location,TOP(voltage, 5),ts
FROM meters 
GROUP BY tbname, location;

场景9:负载排行榜

-- 创建设备负载排行榜(前 50 个峰值)
SELECT tbname,location,groupid,TOP(current, 50),ts
FROM meters 
GROUP BY tbname, location, groupid
LIMIT 20;  -- 显示前 20 个设备

场景10:能耗分析与优化

-- 识别高能耗设备和时段
SELECT tbname,location,TOP(current, 10),ts
FROM meters 
GROUP BY tbname, location;

分步查询示例

当需要结合其他聚合函数分析时,必须使用分步查询:

-- 第一步:获取 TOP 值
SELECT location,TOP(current, 5) as peak_current,ts
FROM meters 
GROUP BY location;-- 第二步:获取统计信息(需要单独查询)
SELECT location,MAX(current) as max_current,AVG(current) as avg_current,COUNT(*) as total_records
FROM meters 
GROUP BY location;-- 第三步:在应用层合并分析结果

与 BOTTOM 函数的对比查询

-- 查询峰值数据
SELECT location,TOP(current, 3) as peak_values,ts
FROM meters 
GROUP BY location;-- 单独查询谷值数据
SELECT location,BOTTOM(current, 3) as valley_values,ts
FROM meters 
GROUP BY location;

注意事项

  1. 参数限制: k 值取值范围为 [1, 100]
  2. NULL 值处理: TOP 函数自动忽略 NULL 值
  3. 相同值处理: 当多条记录有相同值且超出 k 条限制时,会随机选取
  4. 时间戳返回: 系统会同时返回对应记录的时间戳列
  5. 排序保证: 返回结果按照值的大小降序排列
  6. 性能考虑: 在大表上使用时建议配合适当的 WHERE 条件过滤
  7. FILL 限制: TOP 函数不支持 FILL 子句
  8. 函数唯一性: 一个 SQL 语句中只能使用一个 TOP 函数
  9. ORDER BY 限制: TOP 函数不能在 ORDER BY 子句中使用
  10. 聚合函数混用限制: TOP 函数不能与其他聚合函数(如 MAX、MIN、AVG、SUM、COUNT 等)在同一个 SELECT 语句中使用
  11. 嵌套限制: TOP 函数不能嵌套在其他聚合函数中

相关函数

  • BOTTOM(): 返回最小的 k 个值
  • MAX(): 返回最大值(需单独查询)
  • MIN(): 返回最小值(需单独查询)
  • SAMPLE(): 返回随机采样的 k 个值
  • LAST(): 返回最后的非 NULL 值

关于 TDengine

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


文章转载自:

http://pwX8LknL.kjyqr.cn
http://EWvvhRQK.kjyqr.cn
http://7EfN3kDG.kjyqr.cn
http://nlUmdL0Y.kjyqr.cn
http://oENTVQ8d.kjyqr.cn
http://VEkqQ8ov.kjyqr.cn
http://tN0JkZfW.kjyqr.cn
http://ODwjyLzp.kjyqr.cn
http://OVMt5y76.kjyqr.cn
http://p8d4I1qh.kjyqr.cn
http://U6j9tryZ.kjyqr.cn
http://AvjkxlPW.kjyqr.cn
http://brFsQbj8.kjyqr.cn
http://KJIiqMit.kjyqr.cn
http://PrIbTRTj.kjyqr.cn
http://PWk6pCmO.kjyqr.cn
http://tgCJ77p2.kjyqr.cn
http://qvyAbXlM.kjyqr.cn
http://9TAR4WlS.kjyqr.cn
http://aRWWrlpW.kjyqr.cn
http://GqGbxozU.kjyqr.cn
http://b9g93G9X.kjyqr.cn
http://GhA9ZBgw.kjyqr.cn
http://TelpKmpA.kjyqr.cn
http://1TnsfgJZ.kjyqr.cn
http://i8ux79yd.kjyqr.cn
http://AlT8SX3w.kjyqr.cn
http://nDkSBNn2.kjyqr.cn
http://O21ReGbL.kjyqr.cn
http://1ZCLwNox.kjyqr.cn
http://www.dtcms.com/a/379955.html

相关文章:

  • C++ Dijkstra堆优化算法
  • python编程原子化多智能体综合编程应用(下)
  • 国标GB28181视频EasyGBS视频监控平台:一网联全城,交通道路可视化、视频巡检、应急指挥“三合一”。
  • 【React】React 哲学
  • 项目日志输出配置总结(多数据源MyBatis+Logback)
  • LabVIEW滚筒洗衣机测试
  • 英语核心语法点详解:“To”作为介词、不定式与固定搭配的辨析与运用
  • 设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(2)
  • Vivado SDK 中 XScuGic(ARM Cortex-A9 SCU GIC 中断控制器)相关函数
  • 【学习K230-例程21】GT6700-UDP-Client
  • 考研408计算机网络近年第34题真题解析(2021-2024.34)
  • 安装vcenter6.7 第二阶段安装很慢 或卡在50%
  • 《赛事报名系统小程序》
  • 倍福PLC常见问题
  • 课前准备--解析空间转录组肿瘤微环境SNV(visium、stereo)
  • Linux下C语言实现HTTP+SQLite3电子元器件查询系统
  • 第四节 JavaScript——深入变量、作用域与内存管理
  • 淘客返利app后端系统架构设计:从数据一致性到高可用方案
  • 自动清除ROS日志方法汇总
  • GitHub 上整合深度学习 + 遥感数据集(或工具库/benchmark)的项目
  • 学习日记-JS+DOM-day54-9.12
  • 数据分析毕业论文题目推荐:精选选题清单
  • Apache Flink 从流处理基础到恰好一次语义
  • 第2篇:数据持久化实战
  • redis sentinel 与 clauster 的区别
  • Vue: 侦听器(Watch)
  • HTML 设计与使用入门
  • 【大数据专栏】流式处理框架-Apache Fink
  • 老项目CSS样式失效?调整css插件版本解决
  • Flink 实时流处理实战:电商实时大屏分析