记一次:mysql统计的CAST函数与json字段中的某个字段

前言:因为需求的问题,会遇到将某个json存入到一个字段中,但在统计的时候,又需要将这个json中的某个字段作为条件来统计,所以整理了一下cast函数和json中某个字段的条件判断

一、浅谈mysql的json

 1.1 上例子

SELECTlide.id,lide.event_values -> '$.MeasureValue' AS MeasureValue,lide.event_values -> '$.MeasureIndex_Name' AS MeasureIndex_Name,lide.event_values -> '$.deviceName' AS deviceName,lide.create_time FROMlhkj_iot_driver_event lide

注意:上面的 -> 可以用JSON_EXTRACT(lide.event_values, '$.MeasureValue') 代替,如下

SELECTlide.id,JSON_EXTRACT(lide.event_values, '$.MeasureValue')  AS MeasureValue,JSON_EXTRACT(lide.event_values, '$.MeasureIndex_Name') AS MeasureIndex_Name,JSON_EXTRACT(lide.event_values, '$.deviceName') AS deviceName,lide.create_time FROMlhkj_iot_driver_event lide

1.2 解析

mysq json 主要有JSON 对象(json object )和JSON 数组(json array )两种类型

$表示整个json对象,在索引数据时用下标(对于json array,从0开始)或键值(对于json object,含有特殊字符的key要用"括起来,比如$.“my name”)

根据1.1的筛选后面的json条件参数就可以筛选了

1.3 扩展--mysql相关的json函数

二、浅谈CAST函数

2.1 上例子

SELECTCAST( create_time AS date ) AS compareDate,ROUND( AVG( MeasureValue ), 3 ) AS averageValue 
FROM(SELECTlide.id,JSON_EXTRACT(lide.event_values, '$.MeasureValue')  AS MeasureValue,JSON_EXTRACT(lide.event_values, '$.MeasureIndex_Name') AS MeasureIndex_Name,JSON_EXTRACT(lide.event_values, '$.deviceName') AS deviceName,lide.create_time FROMlhkj_iot_driver_event lideWHERElide.create_time BETWEEN '2022-04-01' AND '2024-05-01'AND lide.identifier = 'Rept_MeasureData') tgroup by compareDate;

个人理解:一般CAST要和分组group by组合使用,不仅仅是cast函数,一般的函数都要分组使用不然的话统计出来的只有一条数据往往不是我们想要的结果

2.2 解析

CAST( create_time AS date )是按日期进行转换的,那么也可以按年,按月等如下

SELECT CAST(create_time  AS CHAR(7)) AS month_as_date,YEAR(CAST(create_time AS DATE)) AS year_number,MONTH(CAST(create_time AS DATE)) AS month_number,ROUND( AVG( MeasureValue ), 3 ) AS averageValue 

但这也不是我想要的结果,如果按年-月统计的话我又该如何应对?所以可以用大招, CHAR(数值)

在MySQL中,CAST函数可以用来转换或者格式化时间数据类型。我们想要将这个时间格式化为'YYYY-MM-DD HH:MM:SS'格式。

SELECT CAST(event_datetime AS CHAR(19)) AS formatted_datetime
FROM events;
如果你想要将时间转换为其他格式,你可以更改CHAR(19)为其他的字符长度,并相应地调整格式字符串。例如,如果你想要转换为'YYYY-MM-DD'格式,你可以这样做:

SELECT CAST(event_datetime AS CHAR(10)) AS formatted_date
FROM events;
请注意,CAST函数的具体实现可能会依赖于MySQL的版本,上述代码在MySQL 5.x和更高版本中通常有效。

2.3 扩展--cast规则

CAST函数语法规则:Cast(字段名 as 转换的类型 )

其中类型可以为:

CHAR[(N)] 字符型
DATE 日期,格式为 ‘YYYY-MM-DD’
DATETIME 日期加具体的时间,格式为 ‘YYYY-MM-DD HH:MM:SS’
DECIMAL float型
SIGNED int 型
TIME 时间,格式为 ‘HH:MM:SS’

--------------------------------------- 上述暂时到这,后续在扩展 ------------------------------------

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

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

相关文章

达梦(DM) SQL查询及联合查询

达梦DM SQL查询及联合查询 查询结果排序多表联合查询 这里继续讲解DM数据库的Sql查询操作 查询结果排序 为提高查询结果可读性,我们可以对查询结果按照一定顺序排列,或者也可以将列名替换成数字,例如 ORDER BY 1 DESC,意思是按第…

StableDiffusionWebUI 让我找到了宫崎骏动漫里的夏天

目录 前言一、HAI二、应用场景三、构建 Stable Diffusion 模型1、新建HAI应用2、StableDiffusionWebUI(1)功能介绍(2)页面转中文(3)AI绘图① 正向提示词语② 反向提示词③ “” 、“ AND”、“|” 用法④ 权…

请收好,这份思科备考攻略很细节

对于网络工程师来说,思科认证无疑是一块金字招牌。它不仅代表着专业技能,更是职业发展的加速器。 今天我们不聊选思科认证还是华为认证,只能说是各有各的好,如果你已经选择了思科认证,那么这份备考攻略将为你提供一些实…

Spring MVC(一)

1 Spring MVC概述 我们在之前学习Servlet的时候,认识了在WEB开发中MVC设计模式,其最为经典的设计就是,通过控制器(Controller)分离模型(Model)和视图(View)。在具体的WEB…

conan2 基础入门(04)-指定编译器(gcc为例)

conan2 基础入门(04)-指定编译器(gcc为例) 文章目录 conan2 基础入门(04)-指定编译器(gcc为例)⭐准备生成profile文件预备文件和Code ⭐使用指令预览正确执行结果可能出现的问题 ⭐具体讲解conancmake ENDsettings.yml ⭐准备 生成profile文件 # 生成默认profile文件&#xf…

《一文带你了解》关于ITSS认证-IT服务工程师、IT项目经理

“IT 服务工程师培训”和“IT 服务项目经理培训”为中国电子技术标准化研究院推出的 ITSS 系列培训,通过该培训的人员可系统掌握 IT 运维的知识, 提升项目管理水平,有效满足 GB/T 28827.1 的符合性评估要求。 我要充电学习提升自我&#xff0…

怎么看电脑是固态还是机械硬盘?数据丢失怎么办

在数字化时代,电脑硬盘作为数据存储的核心部件,其类型直接关系到数据读写速度和存储效率。固态硬盘(SSD)与机械硬盘(HDD)作为目前市场上主流的两种硬盘类型,各有其优缺点。然而,对于…

Find My OBD|苹果Find My技术与OBD结合,智能防丢,全球定位

OBD是英文On-Board Diagnostics的缩写,中文翻译为“车载自动诊断系统”。这个系统将从发动机的运行状况随时监控汽车是否尾气超标,一旦超标,会马上发出警示。当系统出现故障时,故障(MIL)灯或检查发动机(Check Engine)警告灯亮&…

react18【系列实用教程】react-router-dom —— 路由管理 (2024最新版)

类似 vue-router 安装 npm i react-router-domreact-router 中包含 native 的开发,仅网站开发,使用更轻量的 react-router-dom 即可 路由模式 history 模式需要后端支持,使用 createBrowserRouter 函数实现hash 模式无需后端支持,…

从新手到高手,教你如何改造你的广告思维方式!

想要广告震撼人心又让人长时间记住?答案肯定是“创意”二字。广告创意,说白了就是脑洞大开,想法新颖。那些很流行的广告,都是因为背后的想法特别、新颖。做广告啊,就得不停地思考,创新思维是关键。 广告思…

【python数据预处理系列】使用Pandas的factorize()函数进行类别编码(整数编码)

在Pandas中,factorize()函数主要用于将分类变量转换为整数编码,这对于减少内存使用或准备数据进行某些统计分析非常有用。 它实际上是将列的唯一值映射到从0开始的整数序列上。 假设有一个DataFrame,其中一列包含一些类别值,你希望…

vue 文本中的\n 、<br>换行显示

一、背景&#xff1a; 后端接口返回数据以\n 作为换行符&#xff0c;前端显示时候需要换行显示&#xff1b; demo&#xff1a; <p style"white-space: pre-wrap;">{{ info }}</p>data() {return {info: 1、优化图片\n 2、 优化时间\n}},项目上&#…