MySQL同表相邻数据比对查询
需求
我们将会比对相邻的数据,其中value是递增的,但也会存在清零的情况。我们的需求是计算当天的分钟递增量。
SQL
语句中需要解释一下参数
- ** ctc_etl.1_1_1907/sum.out_2021 :表名**
- ** WHERE
item_timestamp > “2021-12-01 00:00:00”
AND item_timestamp < “2021-12-02 00:00:00” 是我自己加的筛选条件**
SELECT b.id,( b.item_value - a.item_value ) AS value,b.item_timestamp AS time
FROM(SELECT id,item_value,@num := @num + 1 AS row_number FROM( SELECT @num := 0 ) r,ctc_etl.`1_1_1907/sum.out_2021` WHEREitem_timestamp > "2021-12-01 00:00:00" AND item_timestamp < "2021-12-02 00:00:00" ORDER BYid ) a,(SELECTid,item_value,item_timestamp,@num2 := @num2 + 1 AS row_number FROM( SELECT @num2 := 0 ) r2,ctc_etl.`1_1_1907/sum.out_2021` WHEREitem_timestamp > "2021-12-01 00:00:00" AND item_timestamp < "2021-12-02 00:00:00" ORDER BYid ) b
WHEREa.row_number + 1 = b.row_number;
解析
目前计算的只是每秒的增加量,其次就是存在负数的情况,也就是清零了后一个数比前一个小就造成了负数
最终SQL
SELECTc.id,SUM( c.VALUE ) AS value,DATE_FORMAT( c.time, "%Y-%m-%d %H:%i:00" ) AS time
FROM(SELECTb.id,(b.item_value - a.item_value ) AS value,b.item_timestamp AS time FROM(SELECTid,item_value,@num := @num + 1 AS row_number FROM( SELECT @num := 0 ) r,ctc_etl.`1_1_1907/sum.out_2021` WHEREitem_timestamp > "2021-12-01 00:00:00" AND item_timestamp < "2021-12-02 00:00:00" ORDER BYid ) a,(SELECTid,item_value,item_timestamp,@num2 := @num2 + 1 AS row_number FROM( SELECT @num2 := 0 ) r2,ctc_etl.`1_1_1907/sum.out_2021` WHEREitem_timestamp > "2021-12-01 00:00:00" AND item_timestamp < "2021-12-02 00:00:00" ORDER BY id ) b WHERE a.row_number + 1 = b.row_number ) c WHERE c.VALUE > 0
GROUP BYDATE_FORMAT(c.time,"%Y-%m-%d %H:%i:00")
MySQL同表相邻数据比对查询相关推荐
- MYSQL 单表一对多查询,将多条记录合并成一条记录
MYSQL 单表一对多查询,将多条记录合并成一条记录 一.描述: 在MySQL 5.6环境下,应工作需求:将一个表中多条某个相同字段的其他字段合并(不太会表达,有点绕,直接上图) 想要达到的效果: 实 ...
- MySQL多表数据记录查询详解
在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...
- mysql 子表_MySQL子查询,派生表和通用表达式
一:子查询 1.介绍 在另一个查询(外部查询)中嵌套另一个查询语句(内部查询),并使用内部查询的结果值作为外部查询条件. 2.子查询在where中 SELECT customerNumber, che ...
- mysql多表左联分组查询
在做项目的时候需要实现一个多表左联加分组查询的逻辑. 下图是前端要显示的数据: 数据来源于三张表: ETC表:cap_etc 车辆表:cap_vehicle ETC消费表:cap_etc_record ...
- mysql 单表多字段查询_单表多字段MySQL模糊查询的实现
MySQL模糊查询是我们经常会遇到的,下面就为您介绍MySQL模糊查询的实现方法,希望对您学习MySQL模糊查询方面能够有所帮助. 在最近的一个项目需要实现在单表中对多字段进行多个关键字的MySQL模 ...
- mysql 内存表 速度_mysql查询速度。为什么用内存表查询tmp表比直接选择慢?
我有点困惑这种MySQL行为. 一个带有ORDER BY子句的查询将创建tmp表(如show profile所示),并且运行速度更快,即使没有order with with的相同查询也不会创建tmp ...
- mysql 多表 结构相同 查询
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. expression1, expression2, ... ...
- MySQL学习-表记录的查询操作
数据中最常见的操作就是查询操作,也可以称作检索操作,目的是从表中检索出所需要的数据. select 语句: select 字段列表 from 表名或视图名 [where 条件表达式] [group b ...
- mysql 多子表联查_MySQL-子查询和多表联查
1.多表联查 使用多表联查的场景,有些时候数据在不同的表中,这个时候我们就需要用到mysql中的多表联查. 2.多表联查概念 将两个或两个以上的表按某个条件连接起来,从而选取需要的数据.多表联查是同时 ...
最新文章
- Git环境搭建及简单的本地、远程 两库关联
- 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树
- 三层路由中限制VLAN间转发,但其他转发正常事例
- MindCon极客周 | 第三届全新席卷而来,SIG英雄帖,做硬核玩家,夺万元大奖!
- AbstractFactoryPattern(23种设计模式之一)
- 实验——Windows常用网络测试命令
- linux文件分割(将大的日志文件分割成小的)
- MySQL GROUP BY 语句
- 面向.Net程序员的dump分析
- 推荐阅读-Docker实现原理之Namespace,CGroup
- RCE 0day影响数万台QNAP SOHO NAS 设备
- Java游戏小李飞镖,安全工程与虚拟技术部双节活动
- c语言数组字节偏移,C语言数组中的地址偏移问题
- applicationcontext获取bean_如果你每次面试前都要去背一篇Spring中Bean的生命周期,请看完这篇文章...
- android游戏菜鸟教程,菜鸟教程app
- 转载-计算机网络原理
- 电脑qq空间,qq空间电脑版
- android 免root 免流,安卓无需Root一键免流软件合集,具体哪个能用自测
- 怎么杀php源文件的木马,PHP一句话木马及查杀
- 自用工具 猴子都会用的unity视频播放器
热门文章
- 解决vscode头文件<bits/stdc++.h>报错问题
- 妇科病历汇报PPT模板
- 03 - vulhub - Apereo CAS 4.1 反序列化命令执行漏洞
- docker安装mysql yml文件_Docker 安装mysql
- mysql--数据库剧本指令操作
- 机器学习-过拟合、正则化、稀疏性、交叉验证概述
- 经典电子书(转)免费下载
- 《袁老师访谈录》第二期 | 李世玮教授/香港科大深圳研究院院长:【有你同在,与众不同!】...
- 工具系列————Endnote搜索参考文献
- 嵌入式大牛详解:嵌入式linux开发流程总结