mysql 相邻记录差值_Mysql 相邻两行记录某列的差值

博客内容介绍了如何在MySQL中通过SQL查询,对特定表`sys_touch_info`按照`company_id`分组,计算每组内相邻记录`touch_time`字段的时间差值。查询利用了变量`@rownum`和`@index`来标记行号,并通过LEFT JOIN找到相邻行进行计算。
摘要由CSDN通过智能技术生成

表结构:

318903.html

28bea4e3b089af98abf130b8ec3749fd.png

数据:

318903.html

c4f6107994fee8cd1b130039d2113991.png

需求:

按照company_id不同分组,然后分别求出相同company_id相邻记录touch_time的差值

SQL:

select r1.company_id,

r1.touch_time,

r2.touch_time,

r1.touch_time - r2.touch_time

from (select (@rownum := @rownum + 1) as rownum,

info.company_id,

info.touch_time

from sys_touch_info info, (select @rownum := 0) r

where info.touch_time is not null

order by info.company_id) r1

left join (select (@index := @index + 1) as rownum,

info.company_id,

info.touch_time

from sys_touch_info info, (select @index := 0) r

where info.touch_time is not null

order by info.company_id) r2

on r1.company_id = r2.company_id

and r1.rownum = r2.rownum - 1

结果:

318903.html

bb9e7312bee133ca9c211980b8b8ca53.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值