MySql如何获取相邻数据

 更新时间:2022年05月07日 12:05:22   作者:Rude_M  
这篇文章主要介绍了MySql如何获取相邻数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何获取相邻数据

因为项目,所以找到了一些资料并且总结了下关于获取相邻数据的方式。

我只找到了以下的...

/*获取id值与5相减绝对值最近的数据,如果有绝对值相同的,相邻的数据优先输出*/
/*ABS(X)其实就是获取绝对值,然后的话order by 后面的1代表着根据select关键字
后的第一个字段进行排序。limit 后面的数字代表着你想查询数据的行数*/
SELECT ABS(cid-5),cname FROM company ORDER BY 1 LIMIT 3
/*获取指定id的上一条记录,我这里是以id=5为例的*/
select cid,cname from company order by cid>=5,cid desc limit 1
/*获取指定id的下一条记录,我这里是以id=5为例的*/
SELECT cid,cname from company order by cid<=5,cid asc limit 1

记录一下,以免以后遇到又不会

同表相邻数据比对查询

需求

我们将会比对相邻的数据,其中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` 
	WHERE
		item_timestamp > "2021-12-01 00:00:00" 
		AND item_timestamp < "2021-12-02 00:00:00" 
	ORDER BY
		id 
	) a,
	(
	SELECT
		id,
		item_value,
		item_timestamp,
		@num2 := @num2 + 1 AS row_number 
	FROM
		( SELECT @num2 := 0 ) r2,
			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" 
	ORDER BY
		id 
	) b 
WHERE
	a.row_number + 1 = b.row_number;

解析

目前计算的只是每秒的增加量,其次就是存在负数的情况,也就是清零了后一个数比前一个小就造成了负数

在这里插入图片描述

最终SQL

SELECT
	c.id,
	SUM( c.VALUE ) AS value,
	DATE_FORMAT( c.time, "%Y-%m-%d %H:%i:00" ) AS time 
FROM
	(
	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` 
		WHERE
			item_timestamp > "2021-12-01 00:00:00" 
			AND item_timestamp < "2021-12-02 00:00:00" 
		ORDER BY
			id 
		) a,
		(
		SELECT
			id,
			item_value,
			item_timestamp,
			@num2 := @num2 + 1 AS row_number 
		FROM
			( SELECT @num2 := 0 ) r2,
			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" ORDER BY id ) b WHERE a.row_number + 1 = b.row_number ) c WHERE c.VALUE > 0 
GROUP BY
	DATE_FORMAT(
	c.time,
	"%Y-%m-%d %H:%i:00")

在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL MHA 运行状态监控介绍

    MySQL MHA 运行状态监控介绍

    这篇文章主要介绍MySQL MHA 运行状态监控,MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能,想具体了解的小伙伴可以和小编一起学习下面文章内容
    2021-10-10
  • MySQL中使用SHOW PROFILE命令分析性能的用法整理

    MySQL中使用SHOW PROFILE命令分析性能的用法整理

    这篇文章主要介绍了MySQL中使用show profile命令分析性能的用法整理,show profiles是数据库性能优化的常用命令,需要的朋友可以参考下
    2015-11-11
  • MySQL 到Oracle 实时数据同步

    MySQL 到Oracle 实时数据同步

    这篇文章主要介绍了MySQL 到Oracle 实时数据同步,本次 MySQL 数据实时同步到 Oracle大概只花了几分钟就完成。使用的工具是Tapdata Cloud ,这个工具是永久免费的,需要的朋友可以参考一下
    2022-01-01
  • 深度分析mysql GROUP BY 与 ORDER BY

    深度分析mysql GROUP BY 与 ORDER BY

    鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用ContentProvider时可以使用子查询),主要方法是用SQLiteDatabase 的 rawQuery,直接运行sql语句就可以了。
    2014-06-06
  • Mysql inner join on的用法实例(必看)

    Mysql inner join on的用法实例(必看)

    下面小编就为大家带来一篇Mysql inner join on的用法实例(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql 直接拷贝data 目录下文件还原数据的实现

    mysql 直接拷贝data 目录下文件还原数据的实现

    这篇文章主要介绍了mysql 直接拷贝data 目录下文件还原数据的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    解决Mysql 8.0.17 winx64版本安装过程中遇到的问题

    这篇文章主要介绍了Mysql 8.0.17 winx64版本安装过程中遇到的问题 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • MySQL实战窗口函数SQL分析班级学生考试成绩及生活消费

    MySQL实战窗口函数SQL分析班级学生考试成绩及生活消费

    这篇文章主要为大家介绍了MySQL实战,利用窗口函数SQL来分析班级学生的考试成绩及生活消费的示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 关于加强MYSQL安全的几点建议

    关于加强MYSQL安全的几点建议

    现在php+mysql组合越来越多,这里脚本之家小编就为大家分享一下mysql的安装设置的几个小技巧
    2016-04-04
  • 浅谈MySQL中的子查询优化技巧

    浅谈MySQL中的子查询优化技巧

    这篇文章主要介绍了浅谈MySQL中的子查询优化技巧,子查询的优化是MySQL诸多优化方法中的基本,需要的朋友可以参考下
    2015-05-05

最新评论