TDengine 特殊选择函数 MODE() 用户手册

在这里插入图片描述

MODE 函数用户手册

函数定义

MODE(expr)

功能说明

MODE() 函数返回指定列中出现频率最高的值(众数)。如果有多个值具有相同的最高频率,系统会返回其中一个值。该函数会忽略 NULL 值。

算法原理

MODE 函数的计算过程如下:

  1. 数据收集: 遍历指定列的所有非 NULL 值
  2. 频率统计: 使用哈希表记录每个值的出现次数
  3. 众数识别: 找出出现次数最多的值
  4. 结果返回: 如果存在多个具有相同最高频率的值,返回其中一个

版本要求

  • 最低版本: v3.0.0.0

返回值

  • 数据类型: 与输入参数相同的数据类型
  • 返回内容: 出现频率最高的值

参数说明

参数类型说明取值范围
expr表达式要统计的字段表达式所有数据类型

适用数据类型

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

  • 数值类型: TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、UTINYINT、USMALLINT、UINT、UBIGINT、DECIMAL
  • 字符串类型: VARCHAR、NCHAR
  • 布尔类型: BOOL
  • 时间戳类型: TIMESTAMP

适用范围

  • 表类型: 表和超级表
  • 查询支持: 支持聚合查询
  • 函数特性: 聚合函数、忽略 NULL 值

基本用法示例

单列查询

-- 查找电流的众数值
SELECT MODE(current) FROM meters;-- 查找电压的众数值
SELECT MODE(voltage) FROM meters;-- 查找相位的众数值
SELECT MODE(phase) FROM meters;

分组查询

-- 按区域分组查找电流众数
SELECT location,MODE(current) as current_mode
FROM meters 
GROUP BY location;

字符串类型的众数

-- 查找最常见的设备状态
SELECT MODE(device_status) FROM device_logs;-- 查找最常见的告警类型
SELECT MODE(alarm_type) FROM alarm_records;

智能电表场景应用示例

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

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

场景1:负载模式分析

-- 查找全网最常见的电流值
SELECT MODE(current) as typical_current FROM meters;-- 查找全网最常见的电压值
SELECT MODE(voltage) as typical_voltage FROM meters;-- 查找全网最常见的相位值
SELECT MODE(phase) as typical_phase FROM meters;

场景2:按区域分析典型负载

-- 查找每个区域最典型的电流值
SELECT location,MODE(current) as regional_typical_current
FROM meters 
GROUP BY location;-- 查找每个区域最典型的电压值
SELECT location,MODE(voltage) as regional_typical_voltage
FROM meters 
GROUP BY location;

场景3:设备运行模式分析

-- 查找各电表的典型运行电流
SELECT tbname,location,MODE(current) as device_typical_current
FROM meters 
GROUP BY tbname, location;-- 查找各电表的典型运行电压
SELECT tbname,location,MODE(voltage) as device_typical_voltage
FROM meters 
GROUP BY tbname, location;

场景4:负载基准值确定

-- 确定各区域的负载基准值
SELECT location,MODE(current) as load_baseline,COUNT(*) as total_readings
FROM meters 
GROUP BY location;

场景5:电网稳定性分析

-- 分析电压稳定性(最常见电压值)
SELECT location,MODE(voltage) as stable_voltage_level,groupid
FROM meters 
GROUP BY location, groupid;

场景6:设备分类分析

-- 根据典型电流值对设备进行分类
SELECT tbname,location,MODE(current) as typical_load,CASE WHEN MODE(current) < 5 THEN '低负载设备'WHEN MODE(current) < 15 THEN '中负载设备'WHEN MODE(current) < 25 THEN '高负载设备'ELSE '超高负载设备'END as device_category
FROM meters 
GROUP BY tbname, location;

场景7:时间段负载模式

-- 分析最近一周的典型负载模式
SELECT location,MODE(current) as weekly_typical_current
FROM meters 
WHERE ts >= NOW() - 7d
GROUP BY location;-- 分析工作日的典型负载模式
SELECT location,MODE(current) as weekday_typical_current
FROM meters 
WHERE ts >= NOW() - 30d AND WEEKDAY(ts) BETWEEN 1 AND 5
GROUP BY location;

场景8:电力质量标准分析

-- 分析各区域的标准电压值
SELECT location,MODE(voltage) as standard_voltage,CASE WHEN MODE(voltage) BETWEEN 215 AND 225 THEN '标准电压区域'WHEN MODE(voltage) < 215 THEN '低电压区域'WHEN MODE(voltage) > 225 THEN '高电压区域'ELSE '电压不稳定区域'END as voltage_quality
FROM meters 
GROUP BY location;

场景9:设备组运行特征

-- 分析不同设备组的运行特征
SELECT groupid,location,MODE(current) as group_typical_current,MODE(voltage) as group_typical_voltage,MODE(phase) as group_typical_phase
FROM meters 
GROUP BY groupid, location;

场景10:异常检测基准建立

-- 建立异常检测的基准值
SELECT tbname,location,MODE(current) as normal_current_baseline,MODE(voltage) as normal_voltage_baseline
FROM meters 
WHERE ts >= NOW() - 30d  -- 最近30天的数据
GROUP BY tbname, location;

分步查询示例

当需要结合其他统计信息时:

-- 第一步:获取众数
SELECT location,MODE(current) as current_mode
FROM meters 
GROUP BY location;-- 第二步:获取其他统计信息
SELECT location,AVG(current) as current_avg,MAX(current) as current_max,MIN(current) as current_min,COUNT(*) as total_count
FROM meters 
GROUP BY location;-- 第三步:在应用层分析众数与其他统计量的关系

实际应用价值

负载预测

-- 为负载预测提供基准数据
SELECT location,MODE(current) as predicted_base_load
FROM meters 
WHERE ts >= NOW() - 30d
GROUP BY location;

设备配置优化

-- 为设备配置提供参考
SELECT groupid,MODE(voltage) as recommended_voltage_setting,MODE(current) as typical_current_consumption
FROM meters 
GROUP BY groupid;

注意事项

  1. NULL 值处理: MODE 函数自动忽略 NULL 值
  2. 多众数处理: 当有多个值具有相同最高频率时,返回其中一个值
  3. 数据类型保持: 返回值的数据类型与输入参数保持一致
  4. 性能考虑: 在大表上使用时建议配合适当的时间范围过滤
  5. 样本量要求: 建议有足够的样本量以获得有意义的众数
  6. 聚合函数限制: 不能与其他特定聚合函数在同一 SELECT 中混用
  7. 分组查询: 适合与 GROUP BY 配合使用进行分类分析

相关函数

  • AVG(): 返回平均值
  • MAX(): 返回最大值
  • MIN(): 返回最小值
  • COUNT(): 返回计数

关于 TDengine

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/99017.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/99017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能外骨骼技术应用场景及价格可接受区间分析

一、引言 智能外骨骼机器人融合机械、人工智能和传感器技术,增强或恢复人体运动能力。2025年,该技术在医疗康复、工业生产、军事应用和消费市场快速普及。本文分析其应用场景、市场需求、典型产品、价格可接受区间及相关来源,探讨普及的关键因素。 二、主要应用场景及产品…

Vue模板中传递对象或数组时,避免直接使用字面量[]和{}

在 Vue 中&#xff0c;直接在模板中使用 [] 或 {} 作为 prop 值会导致子组件不必要的重新渲染&#xff0c;因为每次父组件渲染时都会创建新的引用。以下是解决方案和最佳实践&#xff1a; 1. 避免在模板中直接使用字面量 <!-- 避免这样写 --> <ChildComponent :items&…

【C++】list容器的模拟实现

目录 1. 节点(list_node) 的结构 2. 哨兵位头节点 3. list容器的成员变量 4. 插入/删除操作 4.1 插入操作&#xff08;insert&#xff09; 4.2 删除操作&#xff08;erase&#xff09; 5. 迭代器的实现 6. 不同迭代器和const容器的限制 7. 重载operator-> 8. 迭代器…

三大运营商eSIM手机业务开通加速

截至2025年9月11日&#xff0c;中国三大运营商eSIM手机业务开通情况呈现明显差异化&#xff1a;中国联通已率先支持eSIM手机业务&#xff0c;但仅限于特定城市和设备&#xff1b;中国移动和中国电信则处于"技术准备就绪&#xff0c;等待政策批复"阶段&#xff0c;预计…

基于SpringBoot的足球论坛系统+论文示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户功能模块&#xff1a;用户管理、足球赛事、球员信息、推荐话题、帖子信息、周边商城、订单信息、系统管理等技术选型&#xff1a;SpringBoot&#xff0c;Vue等 测试环境&#xff1a;idea2024&#xff0c;jdk1.8&#xff0c;mys…

数据库中悲观锁小结

实际上&#xff0c;悲观并发控制实际上是“先取锁再访问”的保守策略&#xff0c;为数据处理的安全提供了保证。但是在效率方面&#xff0c;处理加锁的机制会让数据库产生额外的开销&#xff0c;还有增加产生死锁的机会&#xff1b;另外&#xff0c;在只读型事务处理中由于不会…

结构光三维重建原理详解(1)

1. 基本原理概述 结构光三维重建&#xff08;Structured Light 3D Reconstruction&#xff09;是一种主动式光学测量方法。其核心思想是&#xff1a; 向物体表面投射一组 已知的、编码好的光栅/条纹图案&#xff1b;使用一个或多个摄像机拍摄这些条纹在物体表面的变形情况&…

TruckSim与Matlab-Simulink联合仿真(一)

摘要 从0到1的TruckSim与Matlab-Simulink 简单的联合仿真。 1. 环境搭建 matlab版本&#xff1a;R2022a TruckSim版本&#xff1a;2019 其他适配版本自行搜索。 matlabR2022a安装参考&#xff1a;参考链接 TruckSim2019安装包百度网盘链接&#xff0c;里面有安装流程&#x…

后端post请求返回页面,在另一个项目中请求过来会出现的问题

目录 1.后端post请求返回页面&#xff0c;跨域问题 一、核心问题&#xff1a;跨域&#xff08;CORS&#xff09;限制&#xff08;最直接的技术障碍&#xff09; 具体表现&#xff1a; 二、安全性问题&#xff1a;CSRF 攻击风险被放大 原理与危害&#xff1a; 三、交互体验…

APT32F0042F6P6 32位微控制器(MCU)单片机 APT爱普特微电子 芯片核心解析

一、核心解析&#xff1a;APT32F0042F6P6 是什么&#xff1f;1. 电子元器件类型APT32F0042F6P6 是爱普特微电子&#xff08;APTCHIP&#xff09; 推出的一款基于平头哥THead内核的32位微控制器&#xff08;MCU&#xff09;。它采用TSSOP20封装&#xff0c;是一款主打高性价比、…

SDR集成式收发器设计资源

一、AD9361 制造商产品编号&#xff1a;ADRV9361-Z7035 库存编号&#xff1a;4032703 价格&#xff1a;CNY17,737.18 含税 制造商产品编号&#xff1a;ADRV1CRR-BOB 库存编号&#xff1a;4023108 价格&#xff1a;CNY3,145.87 含税 制造商产品编号&#xff1a;ADRV1CRR-FMC 库存…

将Varjo XR技术融入飞行模拟器,有效降低成本提升训练效果

扩展现实(XR)飞行模拟器通过以较低的成本提供沉浸式和逼真的飞行环境&#xff0c;彻底改变了飞行训练。本文将XR利用了最近的研究和数据进行综合分析&#xff0c;评估飞行模拟器的有效性。此外&#xff0c;根据XR技术在航空训练中的优势和应用&#xff0c;评估XR飞行模拟器最终…

简单的GIT操作学习记录

Git 版本控制基本使用 1.Idea版本共计基本操作 公司使用Git作为代码版本管理工具&#xff0c;平时使用非常频繁这里简单整理方便后续学习查看 1.1 merge未推送回滚 我们代码merge操作后&#xff0c;并且没有推送到远端&#xff0c;本地项目发现有推送箭头&#xff0c;可以使…

Spring Boot 与前端文件下载问题:大文件、断点续传与安全校验

前言在企业级 Spring Boot 项目中&#xff0c;文件下载 是非常常见的功能场景&#xff1a;用户下载报表、合同、发票 PDF下载图片、音视频资源系统导出大规模 Excel/CSV 数据然而&#xff0c;很多开发者在实现文件下载时&#xff0c;会遇到 下载失败、文件损坏、性能瓶颈、断点…

主板硬件研发基础--HDMI工作原理

HDMI 接口 技术原理:HDMI 接口采用 TMDS 技术传输数字信号,不仅可以传输高清视频信号,还能同时传输多声道音频信号。它支持 EDID 和 DDC2B,设备之间能够自动协商并选择最合适的视频 / 音频格式,实现 “即插即用” 功能。 接口类型:常见的有标准 HDMI 接口、Mini-HDMI 接口…

`Object.groupBy`将数组中的数据分到对象中

Object.groupBy 将一个对象或者数组的元素按照规则分组&#xff0c; 返回一个新对象&#xff0c; Object.groupBy(items, callbackFn) items&#xff1a;要分组的对象或数组&#xff08;通常是数组&#xff09;。 callbackFn(element, index, array)&#xff1a;回调函数&#…

反序列化漏洞详解

用途限制声明&#xff0c;本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具&#xff0c;严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果&#xff0c;作者及发布平台不承担任何责任。渗透测试涉及复杂技…

SQL数据分析原代码--创建表与简单查询

CREATE TABLE&#xff1a;创建表&#xff0c;定义字段名、类型、注释INSERT INTO&#xff1a;插入数据&#xff0c;支持单条或批量插入SELECT&#xff1a;查询数据&#xff0c;*表示所有字段&#xff0c;AS可起别名&#xff0c;DISTINCT去重WHERE&#xff1a;条件筛选&#xff…

k8s查询ServiceAccount有没有列出 nodes 的权限

要检查 ServiceAccount xxxxxx:default 是否具有列出 nodes 的权限&#xff0c;可以使用以下方法&#xff1a;1. **使用 kubectl auth can-i 命令**这是最直接的方法&#xff0c;可以检查特定用户或 ServiceAccount 是否具有特定权限&#xff1a;kubectl auth can-i list nodes…

调试Python程序时,控制台一直打印SharedMemory read faild

from tkinter import filedialog filedialog.askopenfilename()在使用 tkinter 时&#xff0c;只要一处罚&#xff0c;控制台就不停打印 SharedMemory read faild &#xff0c;虽然能用&#xff0c;但是大大的破坏了调试体验&#xff0c;看到如下的提示&#xff0c;你说烦不烦&…